0

我有一个带有加载“2.html”的 iframe 的文档“1.html ”

在这两个 html 上,我都有以下代码:

window.onload=function(){
    window.top.sesion_timer = setTimeout(function(){
       window.top.f_cerrar_sesion();
    },2000);
    //si tocas tecla o clickeas reseteas contador
    window.addEventListener('keydown',function(){   window.top.f_reset_sesion();    },false);
    window.addEventListener('click',function(){     window.top.f_reset_sesion();    },false);
}

在父文档中,我也有以下代码:

var sesion_timer;
function f_reset_sesion(){
    clearTimeout(sesion_timer);
    sesion_timer=setTimeout(f_cerrar_sesion,2000);

}
function f_cerrar_sesion(){
     alert("cerrar");
}

当我单击文档或 iframe 时,超时重新加载但间隔未清除,因此最终调用函数 f_cerrar_sesion,不会发生的事情

4

1 回答 1

0

我终于找到了问题所在。

我必须首先检查文档是否是添加超时的绝对父文档,否则它将为每个 iframe 添加一个超时,因此最终代码将是这样的:

window.onload=function(){
    //start the timeout if is the absolute parent
    if(window.top===window.self) {
        window.top.sesion_timer = window.top.setTimeout(function(){ window.top.f_cerrar_sesion();   },1200000);
    }
    //if keydown or click we reset the timeout calling f_reset_sesion(), where the timeout is
    window.addEventListener('keydown',function(){   window.top.f_reset_sesion();    },false);
    window.addEventListener('click',function(){     window.top.f_reset_sesion();    },false);
}
于 2013-03-27T12:53:12.953 回答