當您點擊鏈接時,爲什麼以下JavaScript失敗?有什麼方法可以解決它?帶有轉義字符的JavaScript警報失敗
<a onclick="alert('Do you want to delete < > " '?');">Link</a>
我知道的轉義字符是非法的,如果他們從字面上打印出來,但是我不明白爲什麼那麼當被轉義應該失敗。由於它是用戶定義的,因此省略字符不是一個選項。
當您點擊鏈接時,爲什麼以下JavaScript失敗?有什麼方法可以解決它?帶有轉義字符的JavaScript警報失敗
<a onclick="alert('Do you want to delete < > " '?');">Link</a>
我知道的轉義字符是非法的,如果他們從字面上打印出來,但是我不明白爲什麼那麼當被轉義應該失敗。由於它是用戶定義的,因此省略字符不是一個選項。
'
被認爲是一個單引號,需要用一個\
逃避它,所以\'
沒有逃逸,JavaScript就拋出一個「未結束的字符串」錯誤。
這工作:
<a onclick="alert('Do you want to delete < > " \'?');">Link</a>
Grr,好的。問題是警報文本是使用Spring的
該字符串似乎是由htmlEscape =「true」而不是javaScriptEscape =「true」生成的。 – Arbel 2013-05-06 08:41:19
是的。問題是逃跑的順序。如果我將htmlEscape設置爲false,並將javaScriptEscape設置爲true,它會生成onclick =「alert('是否要刪除< > \」\'?');「由於我假設的雙引號,這也會失敗。 – ManiSto 2013-05-06 08:53:55
警報消息不是HTML,它取決於系統。你不需要轉義實體,只需要經常在字符串中轉義的字符。 – elclanrs 2013-05-06 06:52:27