Skip to content

Conversation

@cyfung1031
Copy link
Collaborator

@cyfung1031 cyfung1031 commented Feb 7, 2026

目标
提升 ScriptCat MV3 版本在 Firefox 及其他浏览器的兼容性,解决以下主要问题:

  • ts.worker.js 超过 Mozilla 5MB 限制导致打包失败
  • Firefox MV3 对 blob: worker-src 的严格限制
  • Firefox 不支援 "background" permission 检查会报错
  • 原始 ts.worker 档案过大(约 5.9MB),压缩后需 < 5MB 才能通过 addons.mozilla.org 验证

主要变更

  • 档案大小优化
    • ts.worker.js 改名为 ts.worker.js.bin(binary 格式不受 5MB 限制)
    • 引入自订 ZipExecutionPlugin + 原生 JS 解压,将 worker 压缩至约 4MB
  • Worker 载入方式调整
    • getWorkerUrlgetWorker,回传 Promise<Worker>
    • 读取 .bin 的 arrayBuffer → 转为 text/javascript Blob URL → 建立 Worker(绕过 Firefox blob: 限制)
  • Rspack 与打包调整
    • 升级 rspack 设定使用 ECMA 2022
    • Firefox 专用 pack.js:加入 data_collection_permissions(参考 commit c13b502
    • 移除对 "background" permission 的检查(Firefox MV3 不支援)
  • 其他修复
    • 修正 content_security_policy 相关问题

测试结果

https://addons.mozilla.org/en-US/developers/upload/c62fc11505c5453296187f62637ff0f1

Screenshot 2026-02-11 at 12 59 11

能在 Zen 正常跑
但我的 Firefox Developer Edition 好像不太正常... 慢慢改进吧~

@cyfung1031 cyfung1031 marked this pull request as draft February 7, 2026 17:08
@cyfung1031
Copy link
Collaborator Author

@cyfung1031
Copy link
Collaborator Author

Firefox MV3 禁止了 worker-src blob:

@cyfung1031
Copy link
Collaborator Author

cyfung1031 commented Feb 9, 2026

Firefox MV3 禁止了 worker-src blob:

问题已解决
想不到是走回最初用 Plugin 压缩

但这次不是做残缺的压缩。是真真正正做压缩输出解压执行

Screenshot 2026-02-10 at 1 05 19

不过再整理一下才提交代码

5.9 MB -> 3.8 MB
解压大概要 50 ~ 80 ms 30~60ms 。但都是 Worker 后台处理,实际操作感受不到

@cyfung1031
Copy link
Collaborator Author

cyfung1031 commented Feb 10, 2026

@CodFrm 我重新提交了代码

这个跟ScriptCat MV2版的时候做法很类似,但我用完全针对 ts.worker.js 的压缩器,实实在在把 5.9 MB 的档案压缩成 3.8 MB
这样的话日后 Monaco Editor 加入更多TS定义也不会轻易超过 5MB

Firefox MV3 的规格限制很多,完全不让 blobUrl 的 worker 跑起来,也不让 eval 等东西
副档名也要是 .js
所以之前Firefox MV2 代码分割在MV3行不通

压缩方面用 pako 就行了。大概压个 level 6 就很足够
解压是我找AI写出来再改良的。效能跟 pako 差不多但记忆使用更少,不使用其他库用原生JS写,也用上了最新的JS特性
(我独立开了一个 repo 放这个的未压缩版)
我在手机也测试了一下。解压时间也是差不多,不慢

目前 FireMonkey 想加入 Monaco Editor 但因为 5MB 限制不成功 (官方来讲,已经是 4MB -> 5MB )
这边能压到 3.8 MB, 应该能应付未来需要了


压缩方面,AI自己找了 acornmagic-string 。用起来好像不错。
现在只做了最简单的压缩方式。日后有需要可以再深入研究加强压缩。

@cyfung1031 cyfung1031 marked this pull request as ready for review February 10, 2026 15:59
@cyfung1031 cyfung1031 force-pushed the pr-mv3-firefox-support-003 branch from 7ae0298 to 7bfacbb Compare February 11, 2026 03:48
@cyfung1031 cyfung1031 changed the title [v1.3] 让 MV3 兼容更多浏览器 [v1.3] 提升 MV3 版本在更多浏览器(特别是 Firefox)的兼容性 Feb 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant