3

这段代码有什么区别

      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> 

谢谢你。

4

4 回答 4

2

顶部的 javascript 将向文档的第一个 head 标签附加一个新元素,该标签应该等于<script type="text/javascript" src="http://your-script.com/address-here"></script>(或接近)。唯一的区别是浏览器会在遇到 HTML 版本时立即加载它,而 JS 在元素完成添加之前不会被加载。

正如@lostsource 提到的,这通常用于加载依赖脚本或用于引入 polyfill,例如if(!someJSFeatureIWant) {//import the script here}.

于 2012-12-03T20:28:42.573 回答
2

第一个通常用作包含脚本所需的其他 Javascript 文件的一种方式。(它只是<script>像第二个代码示例一样动态创建标签)

例如,您可能会在 main.js 文件中包含核心功能,然后根据用户交互性决定包含其他脚本。(例如 graphics.js、forms.js 等)

同样的方法也用于通过动态包含返回 JSON“填充”响应的 url来发出JSON-P请求。iframes与常规XHR请求相比的主要优点是<script>标签不受同源策略的影响。

于 2012-12-03T20:29:17.297 回答
1

一种是 JavaScript,它会在创建 DOM 后向 DOM 添加一个脚本。另一种是 HTML,将在创建 DOM 时向其添加脚本。

于 2012-12-03T20:27:56.973 回答
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 语法。如果页面代码在您的控制之下,那么您没有理由使用除此之外的任何东西,除非在特殊情况下需要它或出于优化目的。

于 2012-12-03T20:33:00.387 回答