在油猴中如何停止页面上的所有定时器
var id = setInterval(function() {}, 0);
while (id--) clearInterval(id);
在网上找到一段停止所有定时器的代码,
测试了,只能在控制台使用才有效,不明白是因为作用域问题,在油猴中使用无效
测试网站:http://bbs.runbible.cn/forum.php
比如使用下面代码删除页面元素,页面上可能有一些定时器函数一直在运行,导致控制台一直报错,
document.querySelector("head").innerHTML = ""
document.querySelector("body").innerHTML = ""
控制台就会一直这样不停的报错,
dahua1 发表于 2022-4-7 12:24
!(data/attachment/forum/202204/07/122228x8ti6u696ltlhzlu.png)
我知道了,我换了一个版本的油猴也出现了这个问题,是因为油猴在@grant unsafeWindow的情况下,提供的setInterval和clearInterval是劫持过的,他自己管理了一套定时器的逻辑,所以无法用他的clearInterval去干涉页面中的定时器。解决方法改用grant none,或者unsafeWindow.setInterval/unsafeWindow.clearInterval,这个问题在新旧版本的油猴中表现不一致。 在油猴应该也是有效的 王一之 发表于 2022-4-6 14:55
在油猴应该也是有效的
试了 不行,好像在油猴里不能取消
dahua1 发表于 2022-4-6 16:06
试了 不行,好像在油猴里不能取消
看看有没有iframe的坑 王一之 发表于 2022-4-6 17:16
看看有没有iframe的坑
为啥不考虑用window.setinerval劫持...
这个代码思路也太脏了 李恒道 发表于 2022-4-6 18:10
为啥不考虑用window.setinerval劫持...
这个代码思路也太脏了
什么意思? 王一之 发表于 2022-4-6 18:12
什么意思?
run-at注入之后
直接windows.setinterval=()=>{} 李恒道 发表于 2022-4-6 18:16
run-at注入之后
直接windows.setinterval=()=>{}
我自己的代码也有使用 setinterval dahua1 发表于 2022-4-6 19:58
我自己的代码也有使用 setinterval
这样的话实现就看自己怎么设计了
哪种方法都可以的
setinterval劫持要做来源过滤
如果cleareinterval的话就要做id判断
页:
[1]
2