src应该在HTML中的脚本标签中进行HTML转义吗?

时间:2014-11-13 20:50:26

标签: html html-entities html-encode html-escape-characters script-tag

给出这样的代码:

<script src="http://example.com/?foo=1&amp;bar=2"></script>

src的价值是否应如下所示进行HTML转义?

我的实验和研究显示出模棱两可的结果。

1 个答案:

答案 0 :(得分:3)

是。如果您有疑问,可以使用W3C validator,在这种情况下,&必须转义为&amp;

根据this rules解析双引号属性。找到&

  

切换到character reference in attribute value stateadditional allowed character为U + 0022报价标记(“)。

Character reference in attribute value state包含在

  

尝试consume a character reference

     

如果没有返回任何内容,请将U + 0026 AMPERSAND字符(&amp;)附加到   当前属性的值。

     

否则,将返回的字符标记附加到当前字符   属性的价值。

     

最后,切换回切换到的属性值状态   这个州。

因此,如果你没有逃避&,它(可能)也会起作用。但是,它会在consumption of the character reference

期间产生解析错误
  

如果不能匹配,则不会消耗任何字符,也不会消耗任何字符   退回。在这种情况下,如果字符在U + 0026之后   AMPERSAND字符(&amp;)由一个或多个序列组成   字母数字ASCII字符后跟U + 003B SEMICOLON字符   (;),那么这是一个parse error

请注意,如果您想要安全,请将其转义:

  

解析算法中的某些点被称为parse errors。   解析错误的错误处理是明确定义的(即   本说明书中描述的处理规则),但是用户   代理在解析HTML文档时可能会中止解析器   他们遇到的第一个解析错误,他们不希望这样做   应用本规范中描述的规则。