当我使用ajax加载新部分时,Javascript setTimeOut以任何方式触发。我写了一个javascript函数来检查页面是否空闲5秒然后隐藏页面的页眉和底部导航。在页面加载过程中,我单击了新选项卡以加载新内容。当通过jQuery加载新节时它会触发previouse timeOut函数会发生什么。我坚持了下来。 这是我的等待和加载新部分的代码
等待代码检查空闲状态:
function checkIdleHome() {
//check the idle if no event occured
if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {
var events = ['ontouchstart','ontouchend','ontouchmove'],
i = events.length,
timer,
delay = 5000,
logout = function () {
// do whatever it is you want to do
// after a period of inactivity
//alert('lazy boy');
//alert('i am fired');
if(document.getElementById('mainnav')) {
document.getElementById('mainnav').style.display='none';
}
if(document.getElementById('header')) {
document.getElementById('header').style.display='none';
}
},
reset = function () {
clearTimeout(timer);
timer = setTimeout(logout, delay);
//alert(timer);
};
while (i) {
i -= 1;
document.addEventListener(events[i], reset, false);
}
reset();
//end idle if ios found
}//end of detecting navigator
}//end of check idle home
/// Code for load new section
var previd='';
function switchVideo(source,id,frame) {
document.getElementById(id).className='';
document.getElementById(frame).src=source;
if(previd!='' && id!=previd) {
document.getElementById(previd).className='inactiveVideo';
}
previd=id;
}
我想在使用此功能加载新标签时停止超时事件
答案 0 :(得分:0)
你的reset()函数清除setTimeout然后启动一个新的setTimeout。每次调用reset()时,你都会有一个新的setTimeout(),所以你应该为最后一次超时设置一个单独的重置函数。
reset = function ()
{
clearTimeout(timer); // clears the Timeout
timer = setTimeout(logout, delay); // Starts a new timeout
//alert(timer);
};
realReset = function ()
{
clearTimeout(timer); //clears the timeout definitely
}
我希望我一直很有用。