文档未准备好时显示加载

Upv*_*ote 2 javascript jquery

我想向用户显示他想要访问的文档正在加载但尚未准备好.

我想在满载时显示网页.

我用

$(document).ready(function(){});
Run Code Online (Sandbox Code Playgroud)

准备好文件.我应该怎么办?

T.J*_*der 8

首先要问的是,为什么页面加载速度太慢,以至于您觉得需要加载横幅,并尽一切可能来解决这个问题.

如果由于相关网页的性质而无法解决问题,那么下一个考虑因素是确保只有启用了JavaScript的用户才会显示"正在加载"横幅(因为我们稍后会使用JavaScript将其删除,所以将它放在那里然后如果它们没有JavaScript则不删除它会有点意思.这可能是该document.write语句的少数有效剩余使用之一(并且仅当您不使用XHTML时,因为它在XHTML中无效):

<body>
<script>
document.write("<p id='loading'>Loading...</p>");
</script>
Run Code Online (Sandbox Code Playgroud)

...你用CSS设计的风格,大概是:

#loading {
    position:         absolute;
    left:             0px;
    top:              0px;
    background-color: #ddd;
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

然后在你的ready处理程序中删除它:

$('#loading').remove();
Run Code Online (Sandbox Code Playgroud)

如果您正在使用XHTML(或者您根本不想document.write在原则上使用),您可以执行类似的操作,而不是document.write:

<body>
<script>
    (function() {
        var p = document.createElement('p');
        p.id = 'loading';
        p.innerHTML = "Loading...";
        document.body.appendChild(p);
    })();
</script>
Run Code Online (Sandbox Code Playgroud)

实例(在Windows上的IE6/7/8上测试;在Windows上测试Safari;在Linux和Windows上测试Chrome,Opera和Firefox.)