iframe内的setTimeout,焦点丢失时出现问题

时间:2011-07-20 14:55:21

标签: javascript iframe settimeout

我有一个带有简单setTimeout东西的iframe:

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

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

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

当我失去对父窗口的关注(即移动到另一个程序或另一个选项卡)时,问题就出现了。似乎它以某种方式堆叠它必须重新加载内容的次数,然后当我重新获得焦点时,它会在没有延迟的情况下执行所有操作。

当我使用 jQuery 1.6.2 时,此代码失败,但它适用于 jQuery 1.3.2 。我错过了什么?关于窗口/父/ iframe(s)模糊/焦点增益/损失有什么重要的了解吗?任何提示或提示?

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要监控页面上的onblur和onfocus事件..

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

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

你可以使用:

做同样的事情
window.onblur = function(){
    ...
};

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

但是在谷歌浏览器中不起作用:)

答案 1 :(得分:0)

http://www.eslinstructor.net/smartupdater3/尝试使用Smartupdater 3并使用div而不是iframe。

你必须使用jQuery