我有一个文件“1.html”,其中包含加载“2.html”的iframe
在这两个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,不会发生的事情
答案 0 :(得分: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);
}