模拟DOMContentLoaded事件
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事件的更多相关文章
- JS、CSS以及img对DOMContentLoaded事件的影响
最近在做性能有关的数据上报,发现了两个非常有意思的东西:Chrome开发者工具的Timeline分析面板,以及DOMContentLoaded事件.一个是强大的令人发指的性能分析工具,一个是重要的性能 ...
- Window.onLoad 和 DOMContentLoaded事件的先后顺序
相信写js的,都知道window.onload吧,但是并不是每个人都知道DOMContentLoaded,其实即使你不知道,很有可能你也经常使用了这个东西. 一般情况下,DOMContentLoade ...
- 浅谈Winform事件的实现以及模拟其事件的实现(附实现源码)
当我们初学Winform的时候被其神奇的事件功能所吸引,当点击一个按钮时,便会跳到我们所写的点击方法当中去.然而这并不符合我们对方法的理解,究竟.net在后面帮助我们实现了什么.我们怎样模拟其事件的实 ...
- android 模拟按键事件
模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...
- DOMContentLoaded事件
今天查看百度空间源代码,发现多了个util.js文件,打开看看.里面里面定义了addDOMLoadEvent.这是干什么用的? 仔细查看代码,发现在Mozilla添加了DOMContentLoaded ...
- js模拟触发事件
html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件] 可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...
- JS/CSS/IMG加载顺序关系之DOMContentLoaded事件
DOMContentLoaded介绍 DOMContentLoaded事件的触发条件是: 将会在“所有的DOM全部加载完毕并且JS加载执行后触发”. 但如果“js是通过动态加载进来的话,是不会影响到D ...
- JS模拟键盘事件 -- 原理及小例子
提问: 键盘默认事件,比如tab切换,alt+f4关闭,ctrl+t新建等,如果不想通过键盘而是一些按钮点击来触发这些功能,该咋办呢? 例子: 先以tab为例上一个小例子: <!DOCTYPE ...
- HTML5-常见的事件- DOMContentLoaded事件
一般我们监听文档是否加载完成是使用 window的load事件,该事件会在页面中的一切加载完毕时触发,但这个过程可能会因为要加载的外部资源过多而等待时间过长. DOMContentLoaded事件:则 ...
随机推荐
- HTML全局属性
属性 描述 accesskey 规定激活元素的快捷键. class 规定元素的一个或多个类名(引用样式表中的类). contenteditable 规定元素内容是否可编辑. contextmenu 规 ...
- CentOS squid代理内网主机上网 openVpn配置
- Linux下多任务间通信和同步-概述
Linux下多任务间通信和同步-概述 嵌入式开发交流群280352802,欢迎加入! 在前面,我们学习了两种多任务的实现手段:进程和线程.由于进程是工作在独立的内存空间中,不同的进程间不能直接访问到对 ...
- 关闭ES动态创建mapping
使用ES的默认配置会使我们在索引不存在于mapping中的字段时,会自动创建. 这无疑会给我们带来困扰. 在我们不想要某个字段被搜索的时候,我们可以在开始关闭动态创建mapping. 执行如下操作: ...
- Rocketmq整体分析
之前本人在实际的生产环境中,使用过activemq和rabbitmq消息队列,在使用过程中出现一些难以解决的问题,本文通过产品选型.网络架构和核心特性分析了rocketmq的优势和特性. 产品选型 我 ...
- WebChat 清爽来袭 -- JavaChat系统Ⅳ
题记: WebChat 依然搭配的是 JavaChat 服务器,在不修改原来服务器代码的情况下进行使用终端的扩展. 此次项目的难点在于,Action/Servlet ...
- jQuery Ajax 实例 具体介绍$.ajax、$.post、$.get的使用
Jquery在异步提交方面封装的非常好.直接用AJAX非常麻烦须要处理浏览器之间的兼容问题,Jquery大大简化了我们的这些操作操作.不用在考虑浏览器这方面的问题,能够直接使用! $.post.$.g ...
- MYSQL 体系结构图-log (踏雪无痕) (UC技术博客)
http://www.cnblogs.com/chenpingzhao/category/690116.html http://www.cnblogs.com/chenpingzhao/p/51074 ...
- 转 - CSS深入理解vertical-align和line-height的基友关系
一.想死你们了 几个星期没有写文章了,好忙好痒:个把月没有写长篇了,好忙好想:半个季度没在文章中唠嗑了,好痒好想. 后面一栋楼有对夫妻在吵架,声音雄浑有力,交锋酣畅淋漓,还以为只有小乡镇才有这架势,哦 ...
- 001-视频 video
<!DOCTYPE HTML> <html> <body> <video width="320" height="240&quo ...