不用等待图片加载的Onload方法
2012-02-17 20:57 边缘er 阅读(541) 评论(0) 收藏 举报使用背景:页面含有大量嵌入式图片,实现不用等待图片加载完毕就可以对DOM操作。
function addLoadEvent(loadEvent,waitForImages) {
if(!isCompatible()) return false;
if(waitForImages) {
return addEvent(window, 'load', loadEvent);
}
var init = function() {
if (arguments.callee.done) return;
arguments.callee.done = true;
loadEvent.apply(document,arguments);
};
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init, false);
}
if (/WebKit/i.test(navigator.userAgent)) {
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
clearInterval(_timer);
init();
}
},10);
}
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
if (this.readyState == "complete") {
init();
}
};
/*@end @*/
return true;
}
这个方法来自《js DOM高级程序设计》,其中用到了addEvent方法。2个参数:第一个就是页面加载完(不包括图)要执行的js方法;第二个参数如果设置为true的话,就是调用原始的onload,也就是等待图片加载完成。
使用这个方法唯一需要注意的一点是,执行的js里边不要操作为加载完成的图片属性,比如宽高等。
浙公网安备 33010602011771号