【问题标题】:How to bypass clearTimeout in Javascript?如何绕过 Javascript 中的 clearTimeout?
【发布时间】:2016-12-25 18:59:44
【问题描述】:

我经常访问一个按顺序显示图像的网站。查看第一张图片后,该图片的弹出链接会在 30 秒后激活。我想绕过这个计时器。于是,我查看了该页面的源代码,发现了以下几行代码-

function Window(ID) {

        var lg = JSON.stringify(lg);
        CloseTimeout = setTimeout('Close(' + wID + ',' + nd + ',' + lnkFlag + ');', 30000);
        interval = window.setInterval(function () {
        }, 1000);
    }

在第 6 行,30000 是等待的时间,以毫秒为单位。

有没有办法使用一些 javascript 代码为所有链接绕过/减少此计时器的持续时间?任何帮助将不胜感激。

【问题讨论】:

  • 我删除了我的答案,因为我意识到它不起作用。由于看起来负责关闭弹出窗口的函数是CloseWindowOnUpdateTask,这需要一些可能难以获得的参数,因此您需要找出合适的workIDnextTrIdlnkFlag 值是什么,然后使用这些参数调用CloseWindowOnUpdateTask
  • 哇,这是糟糕的代码。
  • 它在你自己的浏览器中...所以只需重写函数。

标签: javascript jquery timer


【解决方案1】:

关于您的问题的解决方法可能是基于替换标准 setTimeout

这不是礼貌正确的方式,但已经够快了。

代码:

var _setTimeout = window.setTimeout;
window.setTimeout = function (a, b) {
    if ((typeof a === 'string' || a instanceof String) &&
            (a.startsWith('CloseWindowOnUpdateTask') && b == 30000)) {
        _setTimeout(a, 1000);
    } else {
        _setTimeout.apply(null, arguments);
    }

}

【讨论】:

  • +1 一个糟糕的 hack,但这可能正是 OP 所需要的,其他任何东西都可能是矫枉过正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 2017-12-18
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
相关资源
最近更新 更多