这是什么意思:"document.write('<scr'+'ipt ......"?

vsy*_*ync 19 html javascript

我在每个Yahoo!上看过这个 新闻页面,在源代码的底部,
并且无法理解为什么他们会像这样打破脚本字.

有人知道这有什么理由吗?

document.write("<scr"+"ipt language=javascript src=http://l.yimg.com/d/lib/bc/bc_2.0.4.js></scr"+"ipt>");
Run Code Online (Sandbox Code Playgroud)

Ric*_*dle 40

考虑这个简化的例子:

<script>
document.write("something </script> something");
</script>
Run Code Online (Sandbox Code Playgroud)

浏览器的HTML解析器将</script>在JavaScript字符串中看到并将其解释为脚本元素的结尾.

HTML解析器不知道JavaScript语法 - 它只知道<script>元素在下一个结束</script>.

(它也知道你不能拥有嵌套<script>元素,因此在你的例子中打开了开头<script>和关闭</script>.)

  • 注意:相同的方式表现为SO中的代码着色.注意"某事"被视为脚本元素之外的文本内容. (13认同)