DOMLoaded 类似jquery的$(callback)
2016-01-22 00:00
711 查看
/** * Created by doyen on 2016/1/22. */ (function (window) { var userAgent = navigator.userAgent; var ieReg = /MSIE\s(?=(\d{1,2}.\d{1}))/; var ieVersion = userAgent.match(ieReg) && parseInt(userAgent.match(ieReg)[1]); if (ieVersion != null && ieVersion <= 8) { /*IE8 and lower control first method: * onreadystatechange */ //function domLoadedHandle () { // if (document.readyState === "complete") { // alert(2) // document.detachEvent("onreadystatechange", domLoadedHandle); // } //}; // //document.attachEvent("onreadystatechange", domLoadedHandle); /*IE8 and lower control second method: * document.documentElement.doScroll * this function generate when dom load complete */ if (document.documentElement.doScroll && top) { doScrollCheck(); } function doScrollCheck() { try { document.documentElement.doScroll("left"); } catch (error) { setTimeout(doScrollCheck, 1); return "DOMContentLoaded"; } DOMContentLoaded.run(); DOMContentLoaded.callbacks = []; } } else { document.addEventListener("DOMContentLoaded", function () { DOMContentLoaded.run(); DOMContentLoaded.callbacks = []; }, false); } })(window); window.DOMContentLoaded = { callback: function (callback, data) { if (typeof callback == "function") { this.callbacks.push({callback: callback, data: data}); } else { console.warn("please translate a function, your input is:\n" + callback); } }, callbacks: [], run: function () { var callbacks = this.callbacks; for (var i in callbacks) { if (callbacks.hasOwnProperty(i)) { callbacks[i].callback(callbacks[i].data); } } } }
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <title></title> <h4 id="loaded"></h4> </head> <body> <script src="domLoaded.js"></script> <script> function loaded1 (a) { document.getElementById("loaded").innerHTML = a; } function loaded2 (b) { alert(b); } DOMContentLoaded.callback({}); DOMContentLoaded.callback(loaded1, "DOM Loaded"); DOMContentLoaded.callback(loaded2, "DOM Loaded"); </script> </body> </html>
相关文章推荐
- 第二章 jQuery选择器
- 第三章 jQuery中的DOM操作
- jquery读写cookie
- jQuery-extend分析
- JQuery学习笔记——JQuery基础
- 2016 系统设计第一期 (档案一)jQuery checkbox 取值赋值
- 2016 系统设计第一期 (档案一)jQuery radio 取值赋值
- 2016 系统设计第一期 (档案一)jQuery ajax serialize()方法form提交数据
- Jquery 对话框确认
- 冻结 锁定 固定 行 列 表头 抬头 html table jquery 全兼容常见浏览器
- jQuery Dialog API (二)
- 使用JQuery能做什么(zz)
- 解决同一页面jQuery多个版本或和其他js库冲突方法
- jquery jqPlot API 中文使用教程(非常强大的图表工具)
- jquery 给table里的td动态创建控件并处理
- Jquery省市区/县三级联动代码,以及引用area.js插件
- jquery.cookie.js用法实例详解
- jQuery.validator 参数使用javascript方式调用属性
- (js跨域)说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- js在html中的加载执行顺序,多个jquery ready执行顺序