使用微调器加载jQuery整个HTML页面

时间:2012-05-24 17:44:20

标签: jquery ajax jspinner

我正在努力做一些简单的事情 - 制作一个等待显示整个页面的jQuery脚本,包括所有DIV,文本和图像。在加载页面时,我不想显示页面的某些部分,而是显示旋转的GIF图像,而当整个页面加载时,我们可以在浏览器窗口中淡化页面内容。

有很多脚本可以将ajax请求加载到容器DIV中 - 但这是不同的。这将在加载HTML页面时显示旋转的GIF。任何帮助表示赞赏

此类型的脚本仅适用于ajax请求

$('#loadingDiv')
    .hide()  // hide it initially
    .ajaxStart(function() {
        $(this).show();
    })
    .ajaxStop(function() {
        $(this).hide();
    });

4 个答案:

答案 0 :(得分:36)

加载DOM后,

$(document).ready(...)将立即触发。这太早了。您应该使用$(window).on('load', ...)

JavaScript的:

$(window).on('load', function(){
    $('#cover').fadeOut(1000);
})

CSS:

#cover {
    background: url("to/your/ajaxloader.gif") no-repeat scroll center center #FFF;
    position: absolute;
    height: 100%;
    width: 100%;
}

HTML:

<div id="cover"></div>
<!-- rest of the page... -->

看看这个jsFiddle:http://jsfiddle.net/gK9wH/9/

答案 1 :(得分:3)

我会覆盖整个页面,然后在页面加载后删除叠加层。你可以调整一下,如果你愿意也可以显示loading.gif。 这是一个例子:

HTML

​<body>
<div id="container">
    <h2>Header</h2>
    <p>Page content goes here.</p>
    <br />
    <button id="remove_overlay">Remove Overlay</button>
</div>
​</body>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

CSS

#container{padding:20px;}

h2 {margin-bottom: 10px; font-size: 24px; font-weight: bold;}

#overlay {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height:2305px !important; /*change to YOUR page height*/
        background-color: #000;
        filter:alpha(opacity=50);
        -moz-opacity:0.5;
        -khtml-opacity: 0.5;
        opacity: 0.5;
        z-index: 998;
}
#remove_overlay{position:relative; z-index:1000;}

jQuery的:

$(document).ready(function () { 

        // Set a variable that is set to the div containing the overlay (created on page load)
        var page_overlay = jQuery('<div id="overlay"> </div>');

        // Function to Add the overlay to the page
        function showOverlay(){
            page_overlay.appendTo(document.body);
        }
        // Function to Remove the overlay from the page
        function hideOverlay(){
            page_overlay.remove();
        }

        // Show the overlay.
        $(showOverlay);

       });
});

$(document).ready(function () { 
    $(hideOverlay);
});

您需要对此进行调整,以便在请求页面时立即加载叠加层(调整$(showOverlay);调用,以便在文档准备好之前触发。

这是一个简单的工作小提琴,带有一个用于移除叠加层的按钮。你应该可以从那里开始:) http://jsfiddle.net/3quN5/     

答案 2 :(得分:2)

我认为最好的方法是设置一个'cover'div,它会在加载时覆盖整个页面。它会是不透明的,并且会包含你的GIF。

一旦页面加载,以下内容就会隐藏div:

$(document).ready(function() {
  // Hide the 'cover' div
});

以下内容会使div成为页面的大小:

.div{
  height:100%;
  width:100%;
  overflow:hidden;
}

答案 3 :(得分:0)

首先,你是指身体标签之间的一切吗?做旋转礼物的最好方法是添加一个定义gif的类,无重复和居中。在页面准备好显示时删除该类。

$('body').addClass('loading')
$('body').removeClass('loading')

这总是最好的技巧,因为如果你提交的东西然后尝试通过DOM添加gif,一些浏览器将不会这样做,因为页面已经提交。