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

时间:2011-05-10 08:33:35

标签: 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>

使用Firefox 4我收到错误:

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

它就像解码HTML实体一样,但我不知道为什么。

也试过......

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

哪个出错:

Error: unterminated string literal
Source Code:
return popupTest('This is \'some\' \

1 个答案:

答案 0 :(得分:13)

对于&#039;

' HTML 。因此,对于第一个示例,解析HTML并传递JavaScript引擎:

return popupTest('This is 'some' "test" string')

...第二个'终止字符串。

另一方面:

onclick="return popupTest('This is \'some\' \"test\" string')"

解析为:

  

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

您需要首先处理JavaScript:

return popupTest('This is \'some\' "test" string')
然后

将其转义为HTML:

onclick="return popupTest('This is \'some\' &quot;test&quot; string')"

使用unobtrusive JavaScript并使用JavaScript绑定事件处理程序而不是使用内部事件属性可能会更好。