2013-10-02 19 views
0

我使用Jinja2的插入JavaScript函數裏面的字符串,像這樣:爲什麼轉義單個qoute '結束javascript字符串?

<button type="button" onclick="someFunction('{{ aStringWithSignleQuote }}');"> 

我有神社的autoescaping功能開啓,使得單引號呈現爲

&#39; 

如果我查看頁面的源代碼,那麼這個工作(我看到逃跑的charakter),但是當我點擊按鈕時,有一個錯誤,因爲JavaScript認爲,字符串在逃脫的單引號結束。

有人猜測這裏發生了什麼?

+0

請不要使用事件處理程序屬性。而'javascript:'完全放錯了位置。 – Bergi

+0

@Bergi然後做這件事的最佳做法是什麼? – fhchl

+0

使用[unobtrusive javascript](https://en.wikipedia.org/wiki/Unobtrusive_JavaScript)。從腳本中添加事件處理程序,而不是在標記中。當然,在將其回送到腳本時,您仍然需要將字符串轉義。 – Bergi

回答

1

由於它屬於HTML屬性值,因此它在由JavaScript解析器處理之前由HTML解析器處理。

如果你想逃避它的JavaScript,你需要轉義它的JavaScript(與\)。

相關問題