我看到很多这样的事情:
S = "<scr" + "ipt language=\"JavaScript1.2\">\n<!--\n";
为什么他们会这样做,如果您只是直接使用"<script>"
,是否有应用程序/浏览器混乱?
答案 0 :(得分:7)
看看这个问题:
Javascript external script loading strangeness.
要查看问题,请查看顶部 在其脚本元素中的行:
<script type="text/javascript"> document.write('<script src="set1.aspx?v=1234" type="text/javascript"></script>'); </script>
因此,HTML解析器出现了 开头&lt; script&gt;标签。内 &lt; script&gt ;, normal&lt; tag&gt;解析 被禁用(以SGML术语表示 element有CDATA内容)。找到 脚本块结束的地方,HTML 解析器查找匹配 close-tag&lt; / script&gt;。
它找到的第一个就是那个 在字符串文字内。一个HTML 解析器无法知道它在里面 字符串文字,因为HTML解析器 对JavaScript一无所知 语法,他们只知道CDATA。所以 你实际说的是:
<script type="text/javascript"> document.write('<script src="set1.aspx?v=1234" type="text/javascript"> </script>
即,一个未闭合的字符串文字 和未完成的函数调用。这些 导致JavaScript错误和 永远不会写出所需的脚本标记。
解决问题的常见尝试 是:
document.write('...</scr' + 'ipt>');
这不能解释为什么它在start标签中完成。
答案 1 :(得分:0)
更适合添加脚本的方法是使用DOM。
<script>
类型的元素。请参阅document.createElement
。src
,type
等。)body.appendChild
将其添加到DOM。这是一种更清洁的方法。