Laptop and coffee on a wooden table

test

浏览器扩展使用 JavaScript、HTML、CSS 开发实现,理论上可以一套代码实现适配多个浏览器。但事实上浏览器之间还是存在一些差异,比如 manifest.json 的兼容性,在这个详细的列表里 https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json 可以看到差异还是很大。不过还好,可以使用 webextension-polyfill 解决不同浏览器 API 兼容问题,或者直接使用 Plasmo 框架,这样就无需考虑配置和浏览器扩展特性兼容问题。

浏览器扩展使用 JavaScript、HTML、CSS 开发实现,理论上可以一套代码实现适配多个浏览器。但事实上浏览器之间还是存在一些差异,比如 manifest.json 的兼容性,在这个详细的列表里 https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json 可以看到差异还是很大。不过还好,可以使用 webextension-polyfill 解决不同浏览器 API 兼容问题,或者直接使用 Plasmo 框架,这样就无需考虑配置和浏览器扩展特性兼容问题。

Chrome 扩展转 Safari 扩展

1. xcrun safari-web-extension-converter 命令转换

xcrun safari-web-extension-converter /path/to/Chrome扩展构建后目录  --app-name "Glarity"
如果遇到错误:xcrun: error: unable to find utility "safari-web-extension-converter", not a developer tool or in PATH Do this first:

需要先执行:

sudo xcode-select -s /Applications/Xcode.app

2. Xcode 中调试扩展

上面命令执行成功后,Xcode 会自动运行并打开转换后的项目。

安装调试扩展详见:https://developer.apple.com/documentation/safariservices/safari_web_extensions/running_your_safari_web_extension

MacOS 上安装调试

  1. Xcode 选择 macOS 平台
  2. Xcode => Product => Build
  3. Safari => 开发 => 允许未签名的扩展
  4. Safari => 设置 => 扩展

顺利的话可以看到扩展已安装,勾选即可进行调试了。