window.onload事件

文档中所有图片,脚本,链接以及子框完成加载后,才会触发window.onload事件。

浏览器兼容性:All

DOMContentLoaded事件

当页面中的文档树解析完成时,Document会触发DOMContentLoaded事件。此时,页面引用的样式表和图像文件,以及包含的框架页面可能还没有加载完成。

浏览器兼容性:Chrome 0.2+ , Firefox 1.0+, IE9+, Opera 9.0+, Safari 3.1+

模拟DOMContentLoaded

用户可等不及,文档全部加载完才可以与页面交互,这样的交互体验也是极差的,那对于不支持DOMContentLoaded的浏览器,我们只能来模拟了!

第一种方案:

 /*
document.readyState 四种状态 uninitialized: 尚未开始加载
loading: 正在加载
interactive: 已加载了必需内容
complete: 文档加载完成
*/
function DomContentLoaded(){
if(document.readyState === 'complete'){
document.detachEvent("onreadystatechange", DOMContentLoaded);
//DOMContentLoaded触发,执行绑定的事件
}
}; document.attatchEvent("onreadystatechange", DOMContentLoaded);

第二种方案:

 /*
当前页面如果是顶层窗口,可以每隔1ms模拟点击滚动条,直到不再抛出异常
判断页面是否包含在firame中的方法:
if(window.self === window.top){
//当前页面是父页面
}
下面是jQuery的判断方法,又学会了一招(●'◡'●)
*/
var toplevel = false;
try{
//判断当前页面是否包含在iframe中
topleve = window.iframeElement == null;
}catch(e){} function doScrollCheck(){
try{
document.documentElement.doScroll('left');
}catch(e){
setTimeout(doScrollCheck, 1);
}
}
if(document.documentElement.doScroll && toplevel){
doScrollCheck();
}

当页面内容较多或包含iframe时,模拟滚动条点击会比onreadystatechange先触发,因此jQuery 1.7.1中,结合了这两种方法来模拟DOMContentLoaded事件。

模拟DOMContentLoaded事件的更多相关文章

  1. JS、CSS以及img对DOMContentLoaded事件的影响

    最近在做性能有关的数据上报,发现了两个非常有意思的东西:Chrome开发者工具的Timeline分析面板,以及DOMContentLoaded事件.一个是强大的令人发指的性能分析工具,一个是重要的性能 ...

  2. Window.onLoad 和 DOMContentLoaded事件的先后顺序

    相信写js的,都知道window.onload吧,但是并不是每个人都知道DOMContentLoaded,其实即使你不知道,很有可能你也经常使用了这个东西. 一般情况下,DOMContentLoade ...

  3. 浅谈Winform事件的实现以及模拟其事件的实现(附实现源码)

    当我们初学Winform的时候被其神奇的事件功能所吸引,当点击一个按钮时,便会跳到我们所写的点击方法当中去.然而这并不符合我们对方法的理解,究竟.net在后面帮助我们实现了什么.我们怎样模拟其事件的实 ...

  4. android 模拟按键事件

    模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...

  5. DOMContentLoaded事件

    今天查看百度空间源代码,发现多了个util.js文件,打开看看.里面里面定义了addDOMLoadEvent.这是干什么用的? 仔细查看代码,发现在Mozilla添加了DOMContentLoaded ...

  6. js模拟触发事件

     html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件]  可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...

  7. JS/CSS/IMG加载顺序关系之DOMContentLoaded事件

    DOMContentLoaded介绍 DOMContentLoaded事件的触发条件是: 将会在“所有的DOM全部加载完毕并且JS加载执行后触发”. 但如果“js是通过动态加载进来的话,是不会影响到D ...

  8. JS模拟键盘事件 -- 原理及小例子

    提问: 键盘默认事件,比如tab切换,alt+f4关闭,ctrl+t新建等,如果不想通过键盘而是一些按钮点击来触发这些功能,该咋办呢? 例子: 先以tab为例上一个小例子: <!DOCTYPE ...

  9. HTML5-常见的事件- DOMContentLoaded事件

    一般我们监听文档是否加载完成是使用 window的load事件,该事件会在页面中的一切加载完毕时触发,但这个过程可能会因为要加载的外部资源过多而等待时间过长. DOMContentLoaded事件:则 ...

随机推荐

  1. Android通过类对象的方式实现JSON数据的解析

    1.通过主Activity的Button按钮实现数据的解析 public class MainActivity extends Activity { //定义一个包含Json格式的字符对象 priva ...

  2. SPBF(队列优化的Bellman-Foord)

  3. [Locked] Find the Celebrity

    Find the Celebrity Suppose you are at a party with n people (labeled from 0 to n - 1) and among them ...

  4. DOM解析原理

    用于处理XML文档的DOM元素属性 childNodes:返回当前元素所有子元素的数组: firstChild:返回当前元素的第一个下级子元素: lastChild:返回当前元素的最后一个子元素: n ...

  5. select.poll,epoll的区别与应用

    先讲讲同步I/O的五大模型 阻塞式I/O, 非阻塞式I/O, I/O复用,信号驱动I/O(SIGIO),异步I/O模型 而select/poll/epoll属于I/O复用模型 select函数 该函数 ...

  6. 堆排序中建堆过程时间复杂度O(n)怎么来的?

    首先这个循环是从i = headsize/2 -> 1,也就是说这是一个bottom-up的建堆.于是,有1/2的元素向下比较了一次,有1/4的向下比较了两次,1/8的,向下比较了3次,.... ...

  7. Xcode7连接网络设置

    XCode7连接互联网的时候需要再info.plist设置(之前版本都不需要)连接网络NSAppTransportSecurity  字典NSAllowsArbitraryLoads    布尔  Y ...

  8. Android ViewPager FragmentPagerAdapter

    ViewPager  里面放Fragment <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...

  9. HeadFirst设计模式笔记:(六)命令模式 —— 封装调用

    1.概念 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化.用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化.分离变化与不变的因素. 在面向对象的程序 ...

  10. CSS控制LI行字符溢出用省略号取代

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...