加载消息

时间:2009-06-23 11:57:10

标签: javascript

这是一个crossbrowser window.onload脚本,我想在页面加载(<div id="message">Loading, please wait</div>)时添加消息,而在页面加载完成时它必须消失< / strong>即可。我怎样才能做到这一点?请帮忙。

function init() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;
};

if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, false);
}

/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=\"__ie_onload\" defer=\"defer\" src=\"javascript:void(0)\"><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
    if (this.readyState == "complete") {
    init();
    }
};
/*@end @*/

if (/WebKit/i.test(navigator.userAgent)) {
    var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
        clearInterval(_timer);
        init();
    }
    }, 10);
}

window.onload = init;

3 个答案:

答案 0 :(得分:2)

只需加载页面,加载DIV从头开始即可。在init函数的末尾隐藏它??

答案 1 :(得分:2)

最简单的方法是在加载事件中隐藏DOM中的div:

<html>
    <body>
        <div id="loading">The page is loading, please wait</div>
        [...]

        <script>
            window.onload = function () {
                document.getElementById('loading').style.display = "none";
            }
        </script>
    </body>
</html>

要确保此功能始终有效,即使用户已禁用JavaScript:

<html>
    <body>
        <script>
            document.write('<div id="loading">The page is loading, please wait</div>');
        </script>
        [...]
        <script>
            window.onload = function () {
                document.getElementById('loading').style.display = "none";
            }
        </script>
    </body>
</html>

答案 2 :(得分:1)

您捕获的事件是DOM完成加载时触发的事件,加载的下一步是body.onload(加载所有图像和正文脚本时)。

init(); // show the div

window.onload = function(){
    // finished loading, hide the div
}