javascript - 判断setinterval回调的内容

标签 javascript setinterval

我遇到过一个设计非常糟糕的网站,该网站上的大部分“动态”内容都在setTimeout 内更改。/setInterval功能。

有一个很烦setInterval非常快速地检查页面事件的函数,我想覆盖此函数。

我尝试清除所有 setInterval值,一个一个地检查功能是否停止。此外,清除所有可能的 setInterval像这样的值:for(let i = 0; i < 1000; i++) clearInterval(i); , 停止“动态”页面呈现,我不想这样做

问题:1. 有没有办法查看intervaltimeout功能并清除它们? 2.有没有更好的办法?

我目前的解决方案:我正在覆盖 setIntervalsetTimeout在页面加载之前,记录函数 .toString()内。

最佳答案

简短的回答是否定的,在给定 timerId 的情况下,您无法确定有关 setTimeout/setInterval 回调的任何信息。听起来好像您无权编辑底层 Javascript 来阻止此操作。如果您可以让您的 JS 在页面中的代码之前加载,那么您可以将 setIntervalsetTimeout 替换为您自己的代码,您可以在其中增加间隔随心所欲。例如:

let setTimeoutOld = setTimeout;
setTimeout = (cb, interval) => {
    if (interval < 1000) {
        interval = 1000;
    }
    setTimeoutOld(cb, interval);
}

现在如果页面做类似的事情:

setTimeout(() => { console.log('fired') }, 1);

至少经过 1000 毫秒后才会触发超时。如果您只想根据 cb 的内容修改特定的 setTimeout,您可以执行您在解决方法中提到的操作:调用 .toString()函数并将其与之前生成的一些 .toString()(部分或完整)进行比较,然后执行您想要的任何操作。

关于javascript - 判断setinterval回调的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57519096/

相关文章:

javascript - 将 jquery/js 模板存储在单独的文件中

javascript - 如何定义 "constant"并在 NodeJS 中随处访问它

javascript - 间隔不断变化?

javascript - 使用 onclick 按钮重置 setInterval

javascript - 数学函数在 Angular 4 HTML 中不起作用

javascript - 通过div内部函数的触发隐藏div

javascript 无法与 php 代码一起使用来进行 session 超时检查

JavaScript 的 setInterval 和函数何时完成

javascript - 如何让textarea不另起一行?

javascript - 有什么方法可以通过 Onclick 按钮终止 setInterval 循环