javascript提供了document.readyState=="complete"方法来解决当前页面加载判断的问题。
<script type="text/javascript">
function initView(){
if (document.readyState=="complete")
{
//此处可以填充具体的处理方法
alert("The page is already Load!");
}
}
</script>
<html>
<head></head>
<body onload="initView();">
<!--具体内容省略----->
</bodu>
</html>
===================================================================================
方法一:
function waitThenDoIt(){
try{
if (window.document.readyState){//IE
if (window.document.readyState==’complete’){
doIt();
}else
setTimeout("waitThenDoIt()",10);
} else {//Firefox
window.addEventListener("load",function(){doIt();},false);
}
} catch (ex) {
}
}
function doIt(){
//…
}
将代码中的:
window.addEventListener("load",function(){doIt();},false);
替换为:
window.addEventListener("DOMContentLoaded",function(){doIt();},false);
也可以。
方法二:
做页面时经常会遇到当前页面加载完成后,执行某些初始化工作。这时候就要知道如何判断页面(包括IFRAME)已经加载完成,代码如下:
<script language="javascript">
document.onreadystatechange = statechange;
function statechange() {
if(document.readystate == 'complete') {
for(i=0; i<window.frames[].length; i++) {
window.frames[i].document.onreadystatechange = statechange;
if(window.frames[i].document.readystate != 'complete') {
statechange();
return;
}
}
}
}
</script>
此方法可以写在公用js中,其他方法调用判断即可
方法三:
window..onload的是页面加载完成后执行的事件,而且winodw.onload不能多次执行,jquery的$(fn)解决了这个问题,但是不使用jquery的情况下呢?以下是老外写的解决办法
Js代码 复制代码
addDOMLoadEvent = (function(){
// create event function stack
var load_events = [],
load_timer,
script,
done,
exec,
old_onload,
init = function () {
done = true;
// kill the timer
clearInterval(load_timer);
// execute each function in the stack in the order they were added
while (exec = load_events.shift())
exec();
if (script) script.onreadystatechange = '';
};
return function (func) {
// if the init function was already ran, just run this function now and stop
if (done) return func();
if (!load_events[0]) {
// for Mozilla/Opera9
if (document.addEventListener)
document.addEventListener("DOMContentLoaded", init, false);
// for Internet Explorer
// for Safari
if (/WebKit/i.test(navigator.userAgent)) { // sniff
load_timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState))
init(); // call the onload handler
}, 10);
}
// for other browsers set the window.onload, but also execute the old window.onload
old_onload = window.onload;
window.onload = function() {
init();
if (old_onload) old_onload();
};
}
load_events.push(func);
}
})();