javascript - 嵌套脚本标签,两种方法的比较

标签 javascript

为避免以下代码中的第一个脚本标记过早关闭:

<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/

相关文章:

javascript - this.transitionToRoute 在没有参数的情况下不起作用

javascript - AngularJS 和 NodeJs Express : routes and refresh

javascript - 通过 Hooks 在 React 中重用状态

javascript - 在 Node.js res.redirect() 中包含 JSON

javascript - 如何从需要基本身份验证的 URL 获取 src

javascript - 如何将谷歌浏览器的 .keyIdentifier 转换为合理的东西?

javascript - 使用 javascript 提交表单并将结果返回到同一页面

javascript - Javascript 中带逗号和点的十进制数的区别

javascript - iScroll 一个动态填充的 div 也没有滚动主页

javascript - 如何在优化的requirejs项目中导入外部文件?