加载顺序 ready onload onreadystatechange
2017-02-16 20:12
316 查看
js文件是异步加载,
js是在什么时候被加载执行的
动态引入的外部 JS 文件在各浏览器中的加载顺序不一致
1/ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件);比如一张图片只要<img>标签完成,不用等这个图片加载完成,就可以设置图片的宽高的属性或样式等;
2/onload,指示页面包含图片等文件在内的所有元素都加载完成。比如一张图片要等这个图标加载完成之后才能设置图片的宽高的属性或样式等;
与
3/document.onreadystatechange 当页面加载状态改变的时候执行这个方法。
用法:
onreadystatechange 事件通常用在基于 XMLHttpRequest 对象的 AJAX 应用中,当的该对象的 load state 改变时,会触发此事件。
但在 IE 中 onreadystatechange 事件是其私有实现的,用于数据加载的 IMG、SCRIPT 和 LINK 标记,常常被误用 onreadystatechange 事件而导致在非 IE 浏览器中无法得到预期结果。
造成的影响
onreadystatechange 事件处理在各浏览器支持不一致,可能会导非预期结果。
onreadystatechange 事件是微软对 IE 浏览器的私有事件扩充,所有元素都存在 onreadystatechange 事件。
下列元素对象总可以触发此事件,因为他们均会加载数据:APPLET,DOCUMENT,FRAME,FRAMESET,IFRAME,IMG,LINK,OBJECT,SCRIPT 和 XML 元素。
其他元素对象仅当 DHTML Behavior 被追加后会触发 onreadystatechange 事件。
解决方案
在现行 W3C 标准规范中仅有 XmlHttpRequest 对象中存在 onreadystatechange 事件 ( 请参考 XMLHttpRequest 规范 )。
对于其他元素或对象请慎用 onreadystatechange 事件,因为他只有 IE 浏览器支持,而 Opera 浏览器则只是部分支持。
js是在什么时候被加载执行的
动态引入的外部 JS 文件在各浏览器中的加载顺序不一致
1/ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件);比如一张图片只要<img>标签完成,不用等这个图片加载完成,就可以设置图片的宽高的属性或样式等;
2/onload,指示页面包含图片等文件在内的所有元素都加载完成。比如一张图片要等这个图标加载完成之后才能设置图片的宽高的属性或样式等;
支持该事件的 HTML 标签:
<body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>
支持该事件的 JavaScript 对象:
image, layer, window
1 | 第一种:window.onload = function (){} |
2 | 第二种: window.onload = functionName; //注意:没有括号 |
1 | < body onload = "init();" > |
与
window.onload事件相比,
ready()具有较高的执行优先级
3/document.onreadystatechange 当页面加载状态改变的时候执行这个方法。
用法:
1 | document.onreadystatechange = function (){ |
2 | if (document.readyState== "complete" ) |
3 | { |
4 | window.open( 'http://www.aspbc.com' ); //这里是你要做的事 |
5 | } |
6 | } |
但在 IE 中 onreadystatechange 事件是其私有实现的,用于数据加载的 IMG、SCRIPT 和 LINK 标记,常常被误用 onreadystatechange 事件而导致在非 IE 浏览器中无法得到预期结果。
造成的影响
onreadystatechange 事件处理在各浏览器支持不一致,可能会导非预期结果。
onreadystatechange 事件是微软对 IE 浏览器的私有事件扩充,所有元素都存在 onreadystatechange 事件。
下列元素对象总可以触发此事件,因为他们均会加载数据:APPLET,DOCUMENT,FRAME,FRAMESET,IFRAME,IMG,LINK,OBJECT,SCRIPT 和 XML 元素。
其他元素对象仅当 DHTML Behavior 被追加后会触发 onreadystatechange 事件。
解决方案
在现行 W3C 标准规范中仅有 XmlHttpRequest 对象中存在 onreadystatechange 事件 ( 请参考 XMLHttpRequest 规范 )。
对于其他元素或对象请慎用 onreadystatechange 事件,因为他只有 IE 浏览器支持,而 Opera 浏览器则只是部分支持。
相关文章推荐
- C语言 求解二次函数
- 微信小程序 页面的的滚动问题
- 如何利用fis3来模拟后台返回数据
- Lock wait timeout exceeded; try restarting transaction
- valgrind 的使用简介
- JS实现页面加载完毕之前loading提示效果
- MySQL的约束和索引
- 神经网络学习笔记-04-循环神经网络算法解释
- MySQL中group_concat函数,连接字段,多个值显示为一行
- c语言 求三角形面积升级版
- H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
- MFC-对话框
- HNUSTACM1735 分数运算
- Apache安装(Linux)
- 蓝桥杯 盾神与条状项链
- win7 caffe使用笔记——绘制学习曲线
- 浅谈JVM-图解类加载机制
- 【BZOJ】3139: [Hnoi2013]比赛
- 浅谈JVM-图解类加载机制
- Linux系统进阶路线路(系统管理+内核编程)