与第三方脚本冲突/网络延迟/浏览器性能问题导致无法显示控制面板
描述bug
如题 冲突脚本:
- https://greasyfork.org/zh-CN/scripts/453967
- https://github.com/lzghzr/TampermonkeyJS/raw/master/BiLiveNoVIP/
当网络较慢,或者浏览器扩展较多或在功能上会影响网页元素的载入速度时。
重现bug
- 同时与任意一个脚本组合使用即可重现(净化脚本须打开屏蔽轮播功能)
- 使用慢速网络(如 64 KB/s)
- 使用大量影响浏览器性能的扩展
预期行为
延长等待时间,或在多个阶段(start、end、idle)增加重试,提升发生载入缓慢时的兼容性。
截图
运行日志
操作系统
WIN10 21H2
浏览器
Chrome 126.0.6478.127
用户脚本管理器
Tampermonkey v5.2.0
脚本版本号
7.1.4
网络情况
一般
其他浏览器拓展/用户脚本
Bilibili直播自动追帧 bilibili直播净化 Grammarly
其他
https://github.com/lzghzr/TampermonkeyJS/issues/56#issuecomment-2195271312
将运行时期设置为idle可缓解症状,避免问题100%复现。
我估计是因为BLTH hook了xmlHttpRequest和fetch。而且运行时期太晚hook就没用了,所以脚本不得不在document-start阶段运行。之后会想想办法。
现在还有个问题,在未开播直播间也不显示面板按钮,但是控制台有运行日志的
脚本不得不在document-start阶段运行。
也许可以考虑把一些不必要start的功能分开?避免整个脚本都失效。
现在还有个问题,在未开播直播间也不显示面板按钮,但是控制台有运行日志的
在龟速网络下会接近100%复现。建议为此功能增加轮询重试。
也许可以考虑把一些不必要start的功能分开?避免整个脚本都失效。
再做一个脚本?这还是算了吧,真没那么多精力。
现在还有个问题,在未开播直播间也不显示面板按钮,但是控制台有运行日志的 在龟速网络下会接近100%复现。建议为此功能增加轮询重试。
其实已经有轮询重试了,还报错大概是因为是超时时间太短了(3秒),之后我可以调整一下参数,或者用MutationObserver监听的方式来取代轮询。
再做一个脚本?这还是算了吧,真没那么多精力。
当然不是……只是将一些无须start的功能加个等待,以达到部分document-idle的效果。这样也许还能提高性能表现。
已经有轮询重试
那不可能啊……只要页面完全加载完毕了,你再次轮询的话就不应该会有问题。但事实上页面加载完了它也没有继续尝试了,在控制台也只看到一条超时报错,并没有轮询的迹象。
当然不是……只是将一些无须start的功能加个等待,以达到部分document-idle的效果。这样也许还能提高性能表现。
懂了。脚本现在内部有一套模块的运行时机管理机制,每个模块有自己的运行时机,模块会等到自己的运行时机再运行。要提高和别的脚本的兼容性的话我觉得还是得在hook方面下手,尽量减少副作用。
那不可能啊……只要页面完全加载完毕了,你再次轮询的话就不应该会有问题。但事实上页面加载完了它也没有继续尝试了,在控制台也只看到一条超时报错,并没有轮询的迹象。
看控制台确实是看不出来的,我估计还是超时时间太短。下个版本中我用监听取代了轮询,超时时间延长到了10秒,到时候你再试试。
刚刚更新了7.1.5
情况好点了,但是偶尔还是有这种情况。(B站的廉租CDN问题多多)
🙂