此代码有什么区别
var head=document.getElementsByTagName('head')[0]
var script=document.createElement('script')
script.setAttribute('type', 'text/javascript')
script.setAttribute('src', "http://your-script.com/address-here.js")
head.appendChild(script)
和此代码
<script type="text/javascript" src="http://your-script.com/address-here.js">
</script>
谢谢。
答案 0 :(得分:2)
顶部的javascript将向文档的第一个头标记添加一个新元素,该标记应该等于<script type="text/javascript" src="http://your-script.com/address-here"></script>
(或接近)。唯一的区别是浏览器会在遇到HTML版本时立即加载HTML版本,而直到元素完成后才会加载JS。
正如@lostsource所提到的,这通常用于加载依赖性脚本或用于引入polyfill,例如, if(!someJSFeatureIWant) {//import the script here}
。
答案 1 :(得分:2)
第一个通常用作包含脚本所需的其他Javascript文件的方法。 (它只是像第二个代码示例一样动态创建<script>
标记)
例如,您可以在main.js文件中包含核心功能,然后根据用户交互性决定包含其他脚本。 (例如graphics.js,forms.js等。)
同样的方法也用于通过动态地包含返回JSON“填充”响应的url来发出JSON-P个请求。与iframes
和常规XHR
请求相比,主要优势是<script>
标记不受同一原始政策的影响。
答案 2 :(得分:1)
一个是JavaScript,在创建DOM后会向DOM添加脚本。另一个是HTML,它将在创建DOM时向DOM添加脚本。
答案 3 :(得分:0)
基本上,两者都加载一个js文件,但第一个样本有效地创建了另一个按需。
var head=document.getElementsByTagName('head')[0]
var script=document.createElement('script')
script.setAttribute('type', 'text/javascript')
script.setAttribute('src', "http://your-script.com/address-here.js")
head.appendChild(script)
您通常会使用它将外部代码加载到运行中的页面(创建后)。示例中使用的此特定语法也会污染全局范围,因此不应按原样使用。
<script type="text/javascript" src="http://your-script.com/address-here.js">
</script>
这是用于加载脚本文件的自然HTML语法。如果页面代码在您的控制之下,除非在需要它或用于优化目的的特殊情况下,否则您没有理由使用除此之外的任何内容。