在iframe内设置timeout,当焦点丢失时出现问题

setTimeout inside an iframe, problem when focus losses

本文关键字:问题 焦点 iframe 设置 timeout      更新时间:2023-09-26

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

function load()
{
    setTimeout("reloadContent()", 8000);
}
function reloadContent()
{
    $('#somecontent').doSomething();
    load();
}
$(document).ready(function() 
{
    reloadContent();
});

问题来了,当我失去了对父窗口的关注(即移动到另一个程序或另一个选项卡)。它似乎叠加了重载内容的次数,然后当我重新获得焦点时,它会毫无延迟地执行所有内容。

当我使用jQuery 1.6.2时,这段代码失败了,但它可以使用jQuery 1.3.2。我错过了什么?是否有一些重要的了解窗口/父/iframe(s)模糊/焦点增益/损失?有什么提示吗?

谢谢!

你需要监控你的页面上的onblur和onfocus事件。

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

也可以这样做:

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

但这在Google chrome中不起作用:)

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

必须使用jQuery