单个内部Javascript双引号的字符串问题

fir*_*ire 7 javascript string

这是我的代码:

<script>
    function popupTest(title) {
        alert(title);
        return false;
    }
</script>

<a href="" onclick="return popupTest('This is &#039;some&#039; &quot;test&quot; string')"><span>Recommend</span></a>
Run Code Online (Sandbox Code Playgroud)

使用Firefox 4我收到错误:

Error: missing ) after argument list
Source Code:
return popupTest('This is 'some' "test" string')
Run Code Online (Sandbox Code Playgroud)

这就像它解码HTML实体,但我不知道为什么.

也试过......

<a href="" onclick="return popupTest('This is \'some\' \"test\" string')"><span>Recommend</span></a>
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

Error: unterminated string literal
Source Code:
return popupTest('This is \'some\' \
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 13

&#039;HTML'.因此,对于第一个示例,解析HTML并传递JavaScript引擎:

return popupTest('This is 'some' "test" string')
Run Code Online (Sandbox Code Playgroud)

......然后第二个'终止字符串.

另一方面:

onclick="return popupTest('This is \'some\' \"test\" string')"
Run Code Online (Sandbox Code Playgroud)

被解析为:

一个onclick属性,其值return popupTest('This is \'some\' \后跟一些无效数据.

你需要先处理JavaScript:

return popupTest('This is \'some\' "test" string')
Run Code Online (Sandbox Code Playgroud)

并且,然后逃逸它的HTML:

onclick="return popupTest('This is \'some\' &quot;test&quot; string')"
Run Code Online (Sandbox Code Playgroud)

您可能最好使用不显眼的JavaScript并使用JavaScript绑定事件处理程序而不是使用内部事件属性.