避免在以下代码中过早关闭第一个脚本标记:
<script type="text/javascript">
document.write('<script type="text/javascript" src="file.js"></script>');
</script>
从我读过,两种常见方法(我知道还有其他方法)是:
选项1:在嵌套脚本中转义正斜杠:
document.write('<script type="text\/javascript" src="file.js"><\/script>');
选项2:分开单词&#34; script&#34;在嵌套脚本中:
document.write('<scr' + 'ipt type="text/javascript" src="file.js"></scr' + 'ipt>');
我是否正确,两种选择都可以接受?
第一种方法似乎更简单,但我想如果嵌套脚本中有几行代码,第二种方法可能不如转义大量正斜杠(或引号)那么麻烦?
编辑:我提到这两个选项而不是document.createElement(&#39; script&#39;);因为我正在比较足够多才能处理其他嵌套javascript示例的方法。例如,像这样:
<script type="text/javascript">
if (/iPhone/).test(navigator.userAgent)
{
document.write('<script type="text/javascript">');
document.write('function myFunction () {');
// Some stuff for iPhone
document.write('}');
document.write('myFunction();');
document.write('</script>');
}
提前谢谢!
答案 0 :(得分:1)
如果您只需要加载脚本但不关心它是同步加载还是异步加载,那么createElement
更加清晰:
var sc = document.createElement('script');
sc.setAttribute('src', 'file.js');
sc.setAttribute('type', 'text/javascript');
document.head.appendChild(sc);
这种方法将异步加载,而你的同步加载。
答案 1 :(得分:1)
选项1:逃避正斜杠
没有。你不需要逃避所有正斜杠。您只需要以某种方式拆分</script>
标记,标准方法是在开始<
后立即反斜杠。
所以只使用
document.write('<script type="text/javascript" src="file.js"><\/script>');
(当然,如果你没有做任何动态的事情,比如计算网址或只选择加载脚本,就没有理由“嵌套”脚本元素,只需将它静态地放入你的文档中)