您的位置:首页 > Web前端 > JQuery

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: