JQuery полная загрузка HTML-страницы со счетчиком
Я пытаюсь сделать что-то простое - сделайте jQuery script, который будет ждать, чтобы показать всю страницу, включая все DIV, текст и изображения. Пока страница загружается, вместо того, чтобы показывать части страницы, я хотел бы показать вращающееся изображение GIF, и когда вся страница будет загружена, мы можем угаснуть содержимое страницы в окне браузера.
Существует множество сценариев для загрузки с помощью запроса ajax в контейнер DIV - но это другое. Это покажет вращающийся GIF, пока загружается страница HTML. Любая помощь приветствуется
Этот тип script работает только с ajax-запросами
$('#loadingDiv')
.hide() // hide it initially
.ajaxStart(function() {
$(this).show();
})
.ajaxStop(function() {
$(this).hide();
});
Ответы
Ответ 1
$(document).ready(...)
срабатывает, как только DOM загружается. Это скоро. Вы можете использовать $(window).load(...)
:
JavaScript:
$(window).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/
Ответ 2
Я бы покрыл всю страницу с помощью наложения, а затем удалял наложение после загрузки страницы. Вы можете настроить это, чтобы также показать load.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/
Ответ 3
Я думаю, что лучшим способом было бы иметь "обложку", которая будет охватывать всю страницу, пока она загружается. Это будет непрозрачно и будет содержать ваш GIF.
Следующее затем скроет div после загрузки страницы:
$(document).ready(function() {
// Hide the 'cover' div
});
Следующее сделало бы div размером страницы:
.div{
height:100%;
width:100%;
overflow:hidden;
}
Ответ 4
Во-первых, вы имеете в виду все в тегах тела? Лучший способ сделать спиннинг-подарок - добавить класс, который определяет gif, поскольку ни один не повторяется и не центрируется. Удаление класса, когда страница готова к показу.
$('body').addClass('loading')
$('body').removeClass('loading')
Это всегда лучший способ, потому что, если вы отправляете что-то, попробуйте добавить gif через дополнение DOM, некоторые браузеры не сделают этого, потому что страница была отправлена.