body onload setTimeout没有引用

时间:2018-01-17 07:37:35

标签: javascript jquery timer reference settimeout

在我们的工作中,我们使用的通信门户网站会在一段时间后退出。我的一些同事问我一个javascript,它禁用了autologout。我所能达到的只是重置显示计时器,但计时器本身仍然在运行。以下是计时器的启动方式:

<body class='asam_body' onLoad='window.setTimeout("DsplTime()",1);' >

如您所见,在onLoad上调用了setTimeout,但是没有对setTimeout-call的引用,所以我不能使用clearTimeout()函数。我也尝试从我的脚本中调用DsplTime(),但仍然没有停止计时器。我找到的所有东西都不适用于我的情况,所以我在两小时后放弃了我的搜索。 有没有办法影响这个服务器端的身体定义,例如由

  • 覆盖onLoad(尝试使用@ document-start)
  • 替换字体本身定义的字符串(我猜是因为服务器提供了这个,我的脚本注入的时间很晚,当线路在那里时)
  • 以追溯方式获取对setTiming-Object的引用

这是我相当无用的方法,只会重置显示的时间:

 setInterval(CalcTime, 130000);
 setInterval(resetStart, 130000);
 setInterval(DsplTime, 130000);
//resetStart and CalcTime are prefined functions,
// without any impact on the timer itself, unfortunately

提前致谢!

P.S。:这是我第一次在stackoverflow上问一些东西,所以我希望,我适当地问:)

修改

我尝试了Cancel all Javascript's setTimeouts and setIntervals的蛮力方法,

for (var i = 1; i < 99999; i++) {
        window.clearInterval(i);
        window.clearTimeout(i);
        window.mozCancelAnimationFrame(i); // Firefox
    }

但是我仍然在相同的时间后退出了。

这段代码会在1440分钟后退出:

if (absSec >= 1440)
{
    document.location.href = "../project/auth/logout.php";
}

这是上面提到的 DsplTime()功能的一部分。有没有办法操纵这个功能,而不是阻止它的呼叫? absSec超出范围,所以我无法改变它的价值(我认为这无论如何都不会有帮助?

编辑2:

所以我可以通过

设法停止计时器
// @run-at document-start
//...
var highestTimeoutId = setTimeout(";");
    for (var i = 0 ; i < highestTimeoutId ; i++) {
        window.clearTimeout(i);
       // window.alert(i);
    }

不幸的是,该脚本只能偶尔使用(在80%的页面加载中)。另外,这不会给服务器带来很多负担吗?我不想被封锁......

1 个答案:

答案 0 :(得分:0)

为什么不覆盖javascript函数DsplTime(),以便它不会让你退出?

转到调试控制台并输入类似DsplTime = new function(){}

的内容

当间隔时间和DsplTime()时,该函数将不执行任何操作。