比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 相关文章推荐
JQuery小知识
Oct 15 Javascript
文本框只能选择数据到文本框禁止手动输入
Nov 22 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
Dec 06 Javascript
jQuery实现固定在网页顶部的菜单效果代码
Sep 02 Javascript
JavaScript函数内部属性和函数方法实例详解
Mar 17 Javascript
BootStrap树状图显示功能
Nov 24 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
Jan 16 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
Angular resolve基础用法详解
Oct 03 Javascript
微信小程序实现选择地址省市区三级联动
Jun 21 Javascript
Vue使用v-viewer实现图片预览
Oct 21 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
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
python实现在字符串中查找子字符串的方法
2015/07/11 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
python内置模块collections知识点总结
2019/12/19 Python
如何使用python写截屏小工具
2020/09/29 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
网上卖盒饭创业计划书范文
2014/02/07 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python