2013-05-06 12 views
0

當您點擊鏈接時,爲什麼以下JavaScript失敗?有什麼方法可以解決它?帶有轉義字符的JavaScript警報失敗

<a onclick="alert('Do you want to delete &lt; &gt; &quot; &#39;?');">Link</a> 

我知道的轉義字符是非法的,如果他們從字面上打印出來,但是我不明白爲什麼那麼當被轉義應該失敗。由於它是用戶定義的,因此省略字符不是一個選項。

+0

警報消息不是HTML,它取決於系統。你不需要轉義實體,只需要經常在字符串中轉義的字符。 – elclanrs 2013-05-06 06:52:27

回答

2

&#39;被認爲是一個單引號,需要用一個\逃避它,所以\&#39;

沒有逃逸,JavaScript就拋出一個「未結束的字符串」錯誤。

這工作:

<a onclick="alert('Do you want to delete &lt; &gt; &quot; \&#39;?');">Link</a> 
+0

Grr,好的。問題是警報文本是使用Spring的標記生成的。它不適用於htmlEscape和javaScriptEscape的任何值組合。 – ManiSto 2013-05-06 08:31:36

+0

該字符串似乎是由htmlEscape =「true」而不是javaScriptEscape =「true」生成的。 – Arbel 2013-05-06 08:41:19

+0

是的。問題是逃跑的順序。如果我將htmlEscape設置爲false,並將javaScriptEscape設置爲true,它會生成onclick =「alert('是否要刪除< > \」\'?');「由於我假設的雙引號,這也會失敗。 – ManiSto 2013-05-06 08:53:55