比Jquery的document.ready更快的方法


Posted in Javascript onApril 28, 2010

这个是上次在博客园看到的一篇文章,经测试,确实比jquery的$(document).ready(function(){....})更快,并且在ie和火狐等主流浏览器上都没问题,

忘了原创是谁了,如果主人看到可以联系我, 我会立刻加上原文出处的,敬请见谅。

var 3water =new function() { 
dom = []; 
dom.isReady = false; 
dom.isFunction = function(obj) { 
return Object.prototype.toString.call(obj) === "[object Function]"; 
} 
dom.Ready = function(fn) { 
dom.initReady(); 
//如果没有建成DOM树,则走第二步,存储起来一起杀 
if (dom.isFunction(fn)) { 
if (dom.isReady) { 
fn(); 
//如果已经建成DOM,则来一个杀一个 
} else { 
dom.push(fn); 
//存储加载事件 
} 
} 
} 
dom.fireReady = function() { 
if (dom.isReady) return; 
dom.isReady = true; 
for (var i = 0, n = dom.length; i < n; i++) { 
var fn = dom[i]; 
fn(); 
} 
dom.length = 0; 
//清空事件 
} 
dom.initReady = function() { 
if (document.addEventListener) { 
document.addEventListener("DOMContentLoaded", 
function() { 
document.removeEventListener("DOMContentLoaded", arguments.callee, false); 
//清除加载函数 
dom.fireReady(); 
}, 
false); 
} else { 
if (document.getElementById) { 
document.write("<script id=\"ie-domReady\" defer='defer'src=\"//:\"><\/script>"); 
document.getElementById("ie-domReady").onreadystatechange = function() { 
if (this.readyState === "complete") { 
dom.fireReady(); 
this.onreadystatechange = null; 
this.parentNode.removeChild(this) 
} 
}; 
} 
} 
} 
}
Javascript 相关文章推荐
js创建对象的几种常用方式小结(推荐)
Oct 24 Javascript
Extjs根据条件设置表格某行背景色示例
Jul 23 Javascript
jQuery中even选择器的定义和用法
Dec 23 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
Mar 04 Javascript
JavaScript学习小结(一)——JavaScript入门基础
Sep 02 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
移动端js触摸事件详解
Sep 18 Javascript
BootStrap与Select2使用小结
Feb 17 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
Mar 05 Javascript
jQuery无冲突模式详解
Jan 17 jQuery
小程序实现文字循环滚动动画
Jun 14 Javascript
ExtJS Store的数据访问与更新问题
Apr 28 #Javascript
JS 事件绑定函数代码
Apr 28 #Javascript
javaScript checkbox 全选/反选及批量删除
Apr 28 #Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
Apr 27 #Javascript
jQuery EasyUI 中文API Layout(Tabs)
Apr 27 #Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
Apr 27 #Javascript
jQuery 表格插件整理
Apr 27 #Javascript
You might like
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
js选项卡的实现方法
2015/02/09 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
react-router实现按需加载
2017/05/09 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
解决python删除文件的权限错误问题
2018/04/24 Python
在Python中COM口的调用方法
2019/07/03 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
python实现飞机大战项目
2020/03/11 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
门诊手术室工作制度
2014/01/30 职场文书
承诺书样本
2014/08/30 职场文书
2015年大学生实习评语
2015/03/25 职场文书