上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12下一页
返回列表 发新帖

在油猴中如何停止页面上的所有定时器

[复制链接]

该用户从未签到

5

主题

24

帖子

47

积分

助理工程师

Rank: 1

积分
47
发表于 2022-4-6 14:48:23 | 显示全部楼层 | 阅读模式
1油猫币

    var id = setInterval(function() {}, 0);
    while (id--) clearInterval(id);

在网上找到一段停止所有定时器的代码,
测试了,只能在控制台使用才有效,不明白是因为作用域问题,在油猴中使用无效



测试网站:  http://bbs.runbible.cn/forum.php
比如使用下面代码删除页面元素,页面上可能有一些定时器函数一直在运行,导致控制台一直报错,


document.querySelector("head").innerHTML = ""
document.querySelector("body").innerHTML = ""


1111111111.png

控制台就会一直这样不停的报错,


最佳答案

查看完整内容

我知道了,我换了一个版本的油猴也出现了这个问题,是因为油猴在@grant unsafeWindow的情况下,提供的setInterval和clearInterval是劫持过的,他自己管理了一套定时器的逻辑,所以无法用他的clearInterval去干涉页面中的定时器。解决方法改用grant none,或者unsafeWindow.setInterval/unsafeWindow.clearInterval,这个问题在新旧版本的油猴中表现不一致。 ...
  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    20

    主题

    570

    帖子

    976

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    976

    卓越贡献活跃会员热心会员突出贡献三好学生荣誉开发者喜迎中秋油中2周年

    发表于 2022-4-6 14:48:24 | 显示全部楼层
    dahua1 发表于 2022-4-7 12:24
    [md]![22222222222.png](data/attachment/forum/202204/07/122228x8ti6u696ltlhzlu.png)

    我知道了,我换了一个版本的油猴也出现了这个问题,是因为油猴在@grant unsafeWindow的情况下,提供的setInterval和clearInterval是劫持过的,他自己管理了一套定时器的逻辑,所以无法用他的clearInterval去干涉页面中的定时器。解决方法改用grant none,或者unsafeWindow.setInterval/unsafeWindow.clearInterval,这个问题在新旧版本的油猴中表现不一致。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-24 01:43
  • 签到天数: 126 天

    [LV.7]常住居民III

    201

    主题

    2617

    帖子

    2646

    积分

    管理员

    Rank: 10Rank: 10Rank: 10

    积分
    2646

    荣誉开发者喜迎中秋热心会员活跃会员突出贡献三好学生管理员家财万贯油中2周年

    发表于 2022-4-6 14:55:47 | 显示全部楼层
    在油猴应该也是有效的
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    24

    帖子

    47

    积分

    助理工程师

    Rank: 1

    积分
    47
    发表于 2022-4-6 16:06:00 | 显示全部楼层
    王一之 发表于 2022-4-6 14:55
    在油猴应该也是有效的

    试了 不行,好像在油猴里不能取消
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-24 01:43
  • 签到天数: 126 天

    [LV.7]常住居民III

    201

    主题

    2617

    帖子

    2646

    积分

    管理员

    Rank: 10Rank: 10Rank: 10

    积分
    2646

    荣誉开发者喜迎中秋热心会员活跃会员突出贡献三好学生管理员家财万贯油中2周年

    发表于 2022-4-6 17:16:36 | 显示全部楼层
    dahua1 发表于 2022-4-6 16:06
    试了 不行,好像在油猴里不能取消

    看看有没有iframe的坑
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    431

    主题

    3851

    帖子

    3922

    积分

    管理员

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    3922

    喜迎中秋国庆纪念章荣誉开发者家财万贯管理员油中2周年

    发表于 2022-4-6 18:10:26 | 显示全部楼层
    王一之 发表于 2022-4-6 17:16
    看看有没有iframe的坑

    为啥不考虑用window.setinerval劫持...
    这个代码思路也太脏了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-24 01:43
  • 签到天数: 126 天

    [LV.7]常住居民III

    201

    主题

    2617

    帖子

    2646

    积分

    管理员

    Rank: 10Rank: 10Rank: 10

    积分
    2646

    荣誉开发者喜迎中秋热心会员活跃会员突出贡献三好学生管理员家财万贯油中2周年

    发表于 2022-4-6 18:12:05 | 显示全部楼层
    李恒道 发表于 2022-4-6 18:10
    为啥不考虑用window.setinerval劫持...
    这个代码思路也太脏了

    什么意思?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    431

    主题

    3851

    帖子

    3922

    积分

    管理员

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    3922

    喜迎中秋国庆纪念章荣誉开发者家财万贯管理员油中2周年

    发表于 2022-4-6 18:16:11 | 显示全部楼层

    run-at注入之后
    直接windows.setinterval=()=>{}
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    24

    帖子

    47

    积分

    助理工程师

    Rank: 1

    积分
    47
    发表于 2022-4-6 19:58:07 | 显示全部楼层
    李恒道 发表于 2022-4-6 18:16
    run-at注入之后
    直接windows.setinterval=()=>{}

    我自己的代码也有使用 setinterval
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    431

    主题

    3851

    帖子

    3922

    积分

    管理员

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    3922

    喜迎中秋国庆纪念章荣誉开发者家财万贯管理员油中2周年

    发表于 2022-4-6 21:00:53 | 显示全部楼层
    dahua1 发表于 2022-4-6 19:58
    我自己的代码也有使用 setinterval

    这样的话实现就看自己怎么设计了
    哪种方法都可以的
    setinterval劫持要做来源过滤
    如果cleareinterval的话就要做id判断
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表