为避免以下代码中的第一个脚本标记过早关闭:
<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:拆分嵌套脚本中的“脚本”一词:
document.write('<scr' + 'ipt type="text/javascript" src="file.js"></scr' + 'ipt>');
我是否正确,这两个选项都可以接受?
第一种方法似乎更简单,但我想如果嵌套脚本中有几行代码,第二种方法可能比转义大量正斜杠(或引号)更麻烦?
编辑:我提到的是这两个选项而不是 document.createElement('script');因为我正在比较足够通用的方法来处理其他嵌套的 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>');
}
提前致谢!
最佳答案
OPTION 1: Escape the forward slashes
没有。您不需要转义所有正斜杠。您只需要拆分 </script>
以某种方式标记,标准方法是在开头后立即添加一个反斜杠 <
.
所以只用
document.write('<script type="text/javascript" src="file.js"><\/script>');
(当然,如果您没有做任何动态的事情,例如计算 url 或仅可选地加载脚本,则根本没有理由“嵌套”脚本元素,只需将其静态地放入您的文档中即可)
关于javascript - 嵌套脚本标签,两种方法的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31773709/