我正在JavaScript中使用用户输入。当然,为了安全起见,我的框架正在将一些符号更改为HTML代码。但是由于某种原因破坏了我的JavaScript。例如,这可行:
<a onclick="alert('hello')">Hello</a>
但这不是:
<a onclick="alert('hel l' lo')">Hello</a>
为什么下面的方法不起作用,如何使它起作用?
答案 0 :(得分:3)
'
是'
的HTML。将对HTML进行解析,并将结果传递给JavaScript编译器,以便您的JavaScript为alert('hel ' lo')
,并且您不能在以'
个字符分隔的字符串文字中使用未转义的'
。
对数据进行转义以使其可以安全地插入到HTML中,还不足以使其安全地插入到JavaScript中,然后将JavaScript依次插入到HTML中。
将用户输入存储在a data-*
attribute(这是纯HTML格式,因此您可以安全地使用'
)中,然后从JavaScript中读取属性。
答案 1 :(得分:2)
您要为单引号'
插入字符参考。
即使您使用的是'
,当它到达JavaScript时,它也是一个引号。因此,您将结束字符串文字并导致语法错误。