在JavaScript中使用用户输入会破坏代码

时间:2019-07-11 22:48:55

标签: javascript html

我正在JavaScript中使用用户输入。当然,为了安全起见,我的框架正在将一些符号更改为HTML代码。但是由于某种原因破坏了我的JavaScript。例如,这可行:

<a onclick="alert('hello')">Hello</a>

但这不是:

<a onclick="alert('hel l&#039; lo')">Hello</a>

为什么下面的方法不起作用,如何使它起作用?

2 个答案:

答案 0 :(得分:3)

&#039;'的HTML。将对HTML进行解析,并将结果传递给JavaScript编译器,以便您的JavaScript为alert('hel ' lo'),并且您不能在以'个字符分隔的字符串文字中使用未转义的'

对数据进行转义以使其可以安全地插入到HTML中,还不足以使其安全地插入到JavaScript中,然后将JavaScript依次插入到HTML中。


将用户输入存储在a data-* attribute(这是纯HTML格式,因此您可以安全地使用&#039;)中,然后从JavaScript中读取属性。

答案 1 :(得分:2)

您要为单引号'插入字符参考。

即使您使用的是&#039;,当它到达JavaScript时,它也是一个引号。因此,您将结束字符串文字并导致语法错误。