如何防止javascript超时功能?

如何防止javascript超时功能?

我经常访问的一个网站使用了以下 javascript

    function idle() {
     $(document).unbind('mousemove');
     $(document).unbind('keydown');
     $(document).on('mousemove', function () {
         resetTimebomb('keydown');
     });
     $(document).on('keydown', function () {
         resetTimebomb('mousemove');
     });
     setTimeout('idle();', 60000);
 }

 function resetTimebomb(psUnbind) {
     $(document).unbind(psUnbind);
     $.ajax({
         global: false,
         url: '/internal/reset_timebomb.php',
         success: function (sData) {
             if ($.trim(sData).length && sData != 'STILL_LOGGED_IN') {
                 timeout();
             }
         }
     });
 }

 function timeout() {
     var sReturnTo = '&return_to=' + encodeURIComponent(window.location.pathname + window.location.search);
     var sReturnToUser = typeof (iLoggedInUserID) != 'undefined' ? '&return_to_user=' + iLoggedInUserID.toString() : '';
     window.location = '/index.php?message=TIMEOUT' + sReturnTo + sReturnToUser;
 }

而且该 js 出现在数千行长的 js 文件的中间。这个 js 会在相当短的时间内导致自动注销,如果我没有这么快被启动,我会很高兴的。“60000”的超时时间似乎是 10 分钟。无论用什么方法,我都想

1) 增加超时时间,或
2) 完全消除超时功能,或
3) 模拟活动,即使窗口不在焦点上,也能触发超时重置。

我会使用 NoScript 之类的东西,但我需要允许页面上的所有其他脚本。我需要颠覆的正是这些位于庞大文件中的特定函数。

谢谢。

如果解决方案涉及利用运行 Tomato 固件变体的路由器,我将不胜感激,这样我的所有设备(包括平板电脑)都可以从该解决方案中受益。

答案1

不,不,不……你在这一点上有一些误解。

  1. “60000”的超时似乎是10分钟

    60000 毫秒 = 60 秒 = 1 分钟

  2. setTimeout基本上会给你延迟。它不是一个计时器。它只是意味着在你的情况下function idle()将在 1 分钟后执行。

如果你想摆脱计时器并继续你的游戏,这里有一个小技巧。

只需编辑一行..

success: function (sData) {
    if ($.trim(sData).length && sData != 'STILL_LOGGED_IN') {
        timeout();//erase this like,comment it out.
    }

将其转换为:

  if ($.trim(sData).length && sData != 'STILL_LOGGED_IN') {

    }

timeout() 会在一段时间后将您重定向到...为避免这种情况,请不要调用它。

相关内容