嵌套脚本标签,两种方法的比较
Nested Script Tags, Comparison of 2 Approaches
避免以下代码中的第一个脚本标签过早关闭:
<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:分隔嵌套脚本中的"script"字:
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>');
}
提前感谢!
选项1:转义正斜杠
。您不需要转义所有正斜杠。您只需要以某种方式将</script>
标记分开,标准的方法是在开头的<
后面加上一个反斜杠。
所以只用
document.write('<script type="text/javascript" src="file.js"><'/script>');
(当然,如果你不做任何动态的事情,比如计算url或选择性地加载脚本,没有理由"嵌套"脚本元素,只是把它静态地放到你的文档中)
如果你只需要加载脚本,但不关心它是同步加载还是异步加载,一个更干净的选择是createElement
:
var sc = document.createElement('script');
sc.setAttribute('src', 'file.js');
sc.setAttribute('type', 'text/javascript');
document.head.appendChild(sc);
此方法将异步加载,而您的方法将同步加载。
相关文章:
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- Javascript集:任何覆盖元素之间比较的方法
- jQuery验证插件-比较两个选择下拉列表的自定义方法
- 任何比较两个不同位图图像并在javascript中检测不同区域的方法
- 如何将 Math.random() 方法生成的当前值与以前的值进行比较
- 为什么 ECMAScript 6 包含 Set 对象,但没有提供比较它们相等的方法
- 我需要使用单独类中的方法将单个对象与数组进行比较
- 如何在 $scope.$watch 方法中比较 oldVal 和 newVal
- 将JavaScript文件插入DOM中(方法比较)
- 比较两种回退机制加载本地jQuery库的方法
- 短手(类型不同)是字符串的正确/错误比较的好方法
- For和While迭代方法的比较
- 比较为零的有效方法
- array.sort()方法中反向比较函数背后的逻辑
- 什么'将一个值与多个值进行比较是最漂亮的方法
- 什么'这是比较Google Sheets中两列数据并使用Google脚本仅输出不匹配数据的最佳方法
- 在这种情况下,java脚本中对象方法的比较返回false
- 在javascript中比较位置的正确方法
- 跨浏览器附加body onload(方法比较)
- 方法比较:EaselJS vs多个画布vs隐藏画布的互动性