为什么开发人员要拆分<;JavaScript脚本?
我看到很多这样的事情:为什么开发人员要拆分<;JavaScript脚本?,javascript,html,Javascript,Html,我看到很多这样的事情: S=“\n看看这个问题: 摘自: 要了解问题所在,请查看顶部 其脚本元素中的行: <script type="text/javascript"> document.write('<script src="set1.aspx?v=1234" type="text/javascript"></script>'); </script> 文件。写(“”); 因此,
S=“\n看看这个问题:
摘自:
要了解问题所在,请查看顶部
其脚本元素中的行:
<script type="text/javascript">
document.write('<script src="set1.aspx?v=1234"
type="text/javascript"></script>');
</script>
文件。写(“”);
因此,一个HTML解析器出现并看到
打开标签,里面
,正常解析
已禁用(在SGML术语中
元素具有CDATA内容)。要查找
在脚本块结束的地方,HTML
解析器查找匹配的
关闭标签
它找到的第一个是
在字符串文本中。一个HTML
解析器无法知道它在
字符串文本,因为HTML解析器
我对JavaScript一无所知
语法,他们只知道CDATA
你实际上说的是:
<script type="text/javascript">
document.write('<script src="set1.aspx?v=1234"
type="text/javascript">
</script>
文件。写('
也就是说,未关闭的字符串文字
还有一个未完成的函数调用
导致JavaScript错误和
从未写入所需的脚本标记
解决这个问题的共同尝试
是:
document.write(“…”);
但这并不能解释为什么要在start标记中添加脚本。更合适的附加脚本的方法是使用DOM
创建类型为
的元素。请参阅文档的文档。createElement
设置其属性(src
,type
等)
使用body.appendChild
将其添加到DOM中
这是一种更干净的方法。值得注意的是,自从Netscape时代以来,这就不是一个问题。所有现代浏览器(包括使用“现代”的IE6)都“正常”工作“在这方面。不幸的是,对于某些编辑器中的语法hiliers来说,情况并非如此……在这种情况下,正确的意思是错误的。依赖这种行为会使编写新的HTML/Javascript呈现变得非常困难。仅仅做
是不够的,根本无法回答问题。
document.write('...</scr' + 'ipt>');