JavaScript: как постоянно загружать страницу - PullRequest
1 голос
/ 19 марта 2012

Я знаю, это звучит немного нелогично,

но я ищу способ непрерывной загрузки веб-страницы. Имея это в виду, я хочу, чтобы, например, я использовал иконку на Chrome, сохранив синий анимированный GIF.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Я бы сделал что-то вроде этого:

<iframe style="display:none;" id="iframe1" src="loader.php" ></iframe>
<iframe style="display:none;" id="iframe2" src="" ></iframe>

Создайте файл .php с именем loader.php и просто введите что-то вроде этого:

<? sleep(6); ?>

Тогда на вашей главной странице используйте это:

// DONT FORGET TO INCLUDE JQUERY SOMEWHERE IN YOUR HEADER
<script type="text/javascript">
    var activeIframe = 2;
    var timer = 1;
    function startLoader(){
        if(activeIframe == 1){
            activeIframe = 2;
            $('#iframe1').attr('src', 'loader.php?timer='+timer);
            timer++;
        }else{
            $('#iframe2').attr('src', 'loader.php?timer='+timer);
            activeIframe = 1;
            timer++;
        }
    }

    $(document).ready(function() {
        setInterval("startLoader()",4000);
    });
</script>

Этот файл загружается в первый iFrame. Это будет сделано через 6 секунд, но вы измените содержимое второго iFrame до этого времени: вызов того же файла через 4 секунды. Просто повторите этот процесс. Причина использования двух iframe и ожидания в течение 6 секунд состоит в том, чтобы убедиться, что iframe удастся загрузить (поскольку каждый div будет перезагружаться каждые 8 ​​(4 + 4) секунд), иначе браузер может / может зависнуть. Используя два iframe, один будет всегда загружаться, в то время как другому разрешено завершать. loader.php?timer=<number> используется, чтобы запретить браузеру кэшировать страницу (хотя я думаю, что он все равно не должен этого делать, поскольку функция PHP sleep() всегда замедляет загрузку, но просто для безопасности)

1 голос
/ 19 марта 2012

Вы можете добавить iframe и использовать document.open():

var f = document.createElement('iframe');
f.style.display = 'none';
document.body.appendChild(f);
f.contentWindow.document.open();
console.log(f.contentWindow.document.readyState); // "loading"

Чтобы остановить загрузку, позвоните f.contentWindow.document.close();.

Предыдущий работал очень хорошо в Firefox 10. В Chrome это не работает. Чтобы обмануть Chrome, можно использовать следующее:

var f = document.createElement('iframe');
f.onload = function(){
    if (f.parentNode) setTimeout(function() {
        f.contentWindow.location.reload();
    },40);
};
f.src = 'about:blank';
f.style.display = 'none';
document.body.appendChild(f);

Чтобы остановить вращение в этом случае, удалите <iframe> из документа:

f.parentNode.removeChild(f);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...