Bilibili 自定义首页
环境?
浏览器: (如 Chrome)
浏览器版本: (如 113.0.5672.126)
脚本管理器: (如 暴力猴 / TamperMonkey)
脚本版本: (如 0.14.0, 请先更新到最新版本!!!)
自测 chrome 上的 violentmonkey / tampermonkey 均正常工作
Chrome 131.0.6778.205
tampermonkey v5.3.3
是有点奇怪,我目前关掉了除tampermonkey外的所有扩展,B站首页生效的脚本也只有这一个
另外一台电脑用0.30.2版本脚本就是正常的
反馈里已经不止一个用户有相同的这个问题了
具体错误就是AsyncDisposableStack not disposable
问题来自源码里的 https://github.com/magicdawn/Bilibili-Gate/blob/f9dd1d7938e52f413cc27cf2cefb5087b2a2e51f/src/components/RecGrid/useRefresh.ts#L73
await using stack = new AsyncDisposableStack()
调试见图,我不懂ts这些,不知道怎么修
我水平一般,大概追查到AsyncDisposalStack是来自Tampermonkey内部的代码?
如图1,这是在创建AsyncDisposableStack对象时,跳到了一个虚拟机(应该是这个学名?)里,在搜索AsyncDisposableStack名称的变量,根据watch那里可以看到,AsyncDisposableStack是在o这个对象里面有,并且在图2里可以看到它里面的AsyncDisposableStack和我之前截图的AsyncDisposableStack是一致的。
AsyncDisposableStack里disposed属性的内容是以下错误信息,不知道是否相关?:
[Exception: TypeError: Method get AsyncDisposableStack.prototype.disposed called on incompatible receiver # at get disposed () at AsyncDisposableStack.invokeGetter (:3:28) at Object.has (:95:144) at chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?name=Bilibili-Gate.user.js&id=0e16735b-a572-47d2-bfaa-a1f9f0db0231:19177:43 at memoizedFn.current (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?name=Bilibili-Gate.user.js&id=0e16735b-a572-47d2-bfaa-a1f9f0db0231:10043:30) at chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?name=Bilibili-Gate.user.js&id=0e16735b-a572-47d2-bfaa-a1f9f0db0231:19168:7 at chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?name=Bilibili-Gate.user.js&id=0e16735b-a572-47d2-bfaa-a1f9f0db0231:10917:47 at Id (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?name=Bilibili-Gate.user.js&id=0e16735b-a572-47d2-bfaa-a1f9f0db0231:203:137) at Xb (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?name=Bilibili-Gate.user.js&id=0e16735b-a572-47d2-bfaa-a1f9f0db0231:238:284) at Li (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?name=Bilibili-Gate.user.js&id=0e16735b-a572-47d2-bfaa-a1f9f0db0231:227:119)]
看起来是平台差异, macOS 上 chrome 没有内置这个,使用的是 core-js polifill.
你这是什么操作系统, 看起来是内置了 有 bug 的 AsyncDisposableStack.
或者是其他插件设置了一个不正确的版本
https://github.com/magicdawn/bilibili-gate/raw/release-nightly/bilibili-gate.mini.user.js
试一下开发版, 没问题的话我发一下 release
windows系统
开发版一样的结果,还是一直加载中
备注:只开了Tampermonkey一个插件,并且只开了这一个脚本,排除了其他干扰
开发版的版本号是 0.30.5.2-g6b9c4c3
我找到问题原因了,是因为在chrome://flags/里启用了Experimental JavaScript
关闭后,chrome里就不再内置AsyncDisposableStack了:AsyncDisposableStack is not defined
哎,早该想到的,难怪另一台windows系统的电脑正常……
不过也验证了polifill不能覆盖掉已内置的
chrome://flags/里启用了Experimental JavaScript
确实可以复现.
感谢你提供的信息, v0.30.6 现在兼容了 Experimental JavaScript flag 打开的情况.
你可以自由设置此 flag.
最新的0.30.2版本无法加载/显示推荐视频,一直是“加载中”。降级到0.30.1后可以正常使用
控制台的报错是: