Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在Safari 17.2.1上不能加载 #480

Open
MiKayule opened this issue Jan 10, 2024 · 10 comments
Open

在Safari 17.2.1上不能加载 #480

MiKayule opened this issue Jan 10, 2024 · 10 comments
Assignees
Labels
bug Something isn't working

Comments

@MiKayule
Copy link

MiKayule commented Jan 10, 2024

描述bug

插件在Safari 17.2.1上不能加载,错误似乎是加载依赖时超时,JS控制台截图已附在下方

重现bug

  1. 启用插件
  2. 打开任意直播间
  3. 控制面板按钮不出现,所有功能不运行
  4. 打开JS控制台,看到超时报错和TypeError

预期行为

插件正常加载,出现控制面板按钮,功能运行正常

截图

截屏2024-01-11 1 10 32

运行日志

截屏2024-01-11 0 50 36

操作系统

macOS 14.2.1

浏览器

Safari 17.2.1 (19617.1.17.11.12)

用户脚本管理器

Tampermonkey 4.20.6188

脚本版本号

7.1.2

网络情况

其他浏览器拓展/用户脚本

其他

No response

@MiKayule MiKayule added the bug Something isn't working label Jan 10, 2024
@andywang425
Copy link
Owner

了解,之后我搞个macOS的虚拟机测试一下。

@andywang425
Copy link
Owner

暂时没找到免费的macOS Monterey镜像,没法在你用的环境里调试。

不过从你给的控制台日志来看,问题出在脚本头部的这一行:

// @require         data:application/javascript,window.Vue%3DVue%2Cwindow.VueDemi%3DVue%3B

有可能是因为新版本的Safari不支持在require里使用data:application/javascript这种方式引入代码。

这个暂时也没有好的解决办法,临时解决方案我也没想到,因为这里就得插上这段代码脚本才能运行。回头我再研究研究。

@MiKayule
Copy link
Author

暂时没找到免费的macOS Monterey镜像,没法在你用的环境里调试。

不过从你给的控制台日志来看,问题出在脚本头部的这一行:

// @require         data:application/javascript,window.Vue%3DVue%2Cwindow.VueDemi%3DVue%3B

有可能是因为新版本的Safari不支持在require里使用data:application/javascript这种方式引入代码。

这个暂时也没有好的解决办法,临时解决方案我也没想到,因为这里就得插上这段代码脚本才能运行。回头我再研究研究。

如果有需要的话,我可以帮你做一个镜像,其他力所能及的帮助也可以提供。git log上面你的163邮箱可以联系吗?

@andywang425
Copy link
Owner

如果有需要的话,我可以帮你做一个镜像,其他力所能及的帮助也可以提供。git log上面你的163邮箱可以联系吗?

可以的,我已经回复了。非常感谢。

@andywang425
Copy link
Owner

今天下午试了下在虚拟机里用macOS,无论是13还是14版本,用起来都太卡了,开个浏览器得费劲,只能放弃了。

@andywang425
Copy link
Owner

想到个临时的解决方案,把以下代码写到一个文件里,上传到cdn:

try {
    this.Vue = this.Vue ?? Vue;
    this.VueDemi = this.VueDemi ?? Vue;
} catch (e) {
    console.error('require error', e)
}

然后用cdn的链接替换掉脚本头部的data:application/javascript,window.Vue%3DVue%2Cwindow.VueDemi%3DVue%3B,应该可行。

@MiKayule
Copy link
Author

想到个临时的解决方案,把以下代码写到一个文件里,上传到cdn:

try {
    this.Vue = this.Vue ?? Vue;
    this.VueDemi = this.VueDemi ?? Vue;
} catch (e) {
    console.error('require error', e)
}

然后用cdn的链接替换掉脚本头部的data:application/javascript,window.Vue%3DVue%2Cwindow.VueDemi%3DVue%3B,应该可行。

我把你给出的代码放到了本地服务器的vue-loader.js文件里,然后把脚本头部的@require data:application/javascript,...改成了@require http://localhost/vue-loader.js,确实可行

@MiKayule
Copy link
Author

但是插件虽然加载正常,需要获取账号信息的相关任务却均无法正常运行,报错信息为“账号未登录”。我已尝试重新登录B站账号、删除所有B站相关网站的浏览器本地保存数据,未能解决问题。
截屏2024-01-30 02 09 04
尽管这和前面提到的似乎并不是同一个问题,但考虑到都是Safari相关的问题,大概就不用再专门提一个新issue了……?

@andywang425
Copy link
Owner

但是插件虽然加载正常,需要获取账号信息的相关任务却均无法正常运行,报错信息为“账号未登录”。我已尝试重新登录B站账号、删除所有B站相关网站的浏览器本地保存数据,未能解决问题。 截屏2024-01-30 02 09 04 尽管这和前面提到的似乎并不是同一个问题,但考虑到都是Safari相关的问题,大概就不用再专门提一个新issue了……?

可能是个和浏览器或者Tampermonkey的Cookie政策有关的问题。就算在这个issue里吧,都是不能加载。

@andywang425
Copy link
Owner

最近又研究了一下虚拟机的问题,我发现只需要将Hyper-V关掉就可以大幅减少卡顿。虽然还是有点卡但也能凑合用,于是成功地打开了Safari,在App Store里买了Tampermonkey,运行了一下脚本。
先是遇到了// @require data:application/javascript,window.Vue%3DVue%2Cwindow.VueDemi%3DVue%3B这行的报错。我和你的解决办法差不多,在本地运行了个服务器提供一个js文件来解决。然后我也遇到了报错“账号未登录”的问题。

image

经过测试我发现脚本通过document.cookie获取到的cookie是没问题的。那我觉得只有一种可能:脚本通过GM_xmlhttpRequest发起的请求不会自动带上相应的cookie。Tampermonkey的仓库里也有几个相关的issue,比如Tampermonkey/tampermonkey#786 。看起来这个问题依然存在。似乎涉及到跨域的时候这个问题就会出现。

目前没有什么好的解决办法,只能等Tampermonkey作者修复。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants