setTimeout внутри iframe, проблема при потере фокуса - PullRequest
1 голос
/ 20 июля 2011

У меня есть iframe с простым setTimeout:

function load()
{
    setTimeout("reloadContent()", 8000);
}

function reloadContent()
{
    $('#somecontent').doSomething();
    load();
}

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

Проблема возникает, когда я потерял фокус на родительском окне (т. Е. Переместился в другую программу или на другую вкладку). Кажется, что он каким-то образом суммирует количество повторных загрузок контента, а затем, когда я возвращаюсь к фокусу, он выполняет все без задержки.

Этот код не работает, когда я использую jQuery 1.6.2 , но он работает с jQuery 1.3.2 . Что мне не хватает? Есть ли что-то важное, что нужно знать о размытии окна / родителя / фрейма (ов) / усилении / потере фокуса? Любые советы или подсказки?

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 июля 2011

вам нужно отслеживать события onblur и onfocus на вашей странице ..

    window.addEventListener('focus', function() {
        timeoutVarName = setTimeout(...,8000);
    });

    window.addEventListener('blur', function() {
        clearTimeout(timeoutVarName);
    });

вы можете сделать то же самое, используя:

window.onblur = function(){
    ...
};

window.onfocus = function(){
    ...
};

, но это не будет работать в Googleхром :) 1007 *

0 голосов
/ 20 июля 2011

Попробуйте Smartupdater 3 из http://www.eslinstructor.net/smartupdater3/ и, возможно, используйте div, а не iframe.

Вы должны использовать тогда jQuery

...