总结:
1、异步执行的 js 文件被假定为不使用 document.write() 向加载中的 document 写入内容,因此不要在 异步执行的 js 文件的加载执行过程中使用 document.write()
2、document.write 方法会重写页面内容所以最好不要在页面文档有内容了还使用此方法,此方法应该在页面添加 dom 内容前使用会用来重写页面
3、除了 script 标签属性外,页面引入 js 文件的方式影响其加载执行方式:
任何以添加 script 节点(例如 appendChild(scriptNode) ) 的方式引入的 js 文件都是异步执行的 (scriptNode 需要插入 document 中,只创建节点和设置 src 是不会加载 js 文件的(IE6-9 除外),这跟 img 的预加载不能类比 ) ,无需特别设置 script.type,如果过设置,需要设置为 javascript 类型,否则不会加载 js 文件(text/javascript ,或者带版本号的,如果有特殊需求)
html 文件中的;
window.onload 事件会在 js 文件加载完毕才触发(即使是异步加载,还有 iframe 中网页的加载 )标签中的代码或 src 引用的 js 文件中的代码是同步加载和执行的(较新的浏览器对阻塞的 js 可以并行加载了,但执行依然是同步的)
html 文件中的 script 标签中的代码使用 document.write()方式引入的 js 文件是异步执行的
html 文件中的 script 标签 src 属性所引用的 js 文件的代码内再使用 document.write()方式引入的 js 文件是同步执行的
使用 Image 对象异步预加载 js 文件(不会被执行,onload 事件不会触发,但是会触发 onerror)
不要使用类似下面这种做法,这样并不会发起加载 js 文件的请求:
divNode.innerHTML = '
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于