clearTimeout()不起作用

时间:2013-03-25 11:15:11

标签: javascript iframe

我有一个文件“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,不会发生的事情

1 个答案:

答案 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);
}