safari扩展程序开发

文章目录

safari的extension文档不是很好,建议参考mozilla文档
https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions

safari_web_extensions

safari_web_extension以app的形式安装,安装 扩展APP后,扩展会安装在safari浏览器中

如果不是Apple开发者计划的一部分,或者如果您尚未为现有的Xcode项目配置开发者身份,则您的Safari Web扩展将不会使用开发证书签名

开发扩展

扩展有3个主要部分:

  1. backgroud.js 后台脚本
    在backgroud环境运行,提供了 window 全局变量,也提供了所有的标准 DOM API
  2. content.js 内容脚本
    可以使用 document 对象获取、操作页面的 DOM
  3. popup.js 扩展弹框脚本
    是一个普通网页一样

使用 WebExtension API

要使用WebExtension API,需要在你的 manifest.json 中申请WebExtension API权限

  • manifest.json case
json 复制代码
    "permissions": [
        "runtime",
        "activeTab",
        "tabs",
        "scripting",
        "messaging",
        "webNavigation",
        "<all_urls>"
    ]
  • 使用 browser 命名空间访问这些 API。
js 复制代码
browser.runtime
browser.tabs
runtime

提供一组消息通信 API,在附加组件的不同模块间通信。

js 复制代码
// 发送消息
browser.runtime.sendMessage()	
// 接受消息
browser.runtime.onMessage.addListener(listener)
browser.runtime.onMessage.removeListener(listener)
browser.runtime.onMessage.hasListener(listener)
  • case
js 复制代码
browser.runtime.sendMessage({ greeting: "hello" }).then((response) => {
    console.log("Received response: ", response);
});

browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
    console.log("Received request: ", request);
});

local debug

Safari中允许运行 未签名的扩展

Safari默认情况下会忽略未签名的扩展程序

  1. Safari > Settings.
  2. Advanced > Show features for web developers
  3. Develop > Allow Unsigned Extensions 【每次重启safari都要重新打开】

install extension

  1. 选择 应用程序(macOS)
  2. run
    应用程序主页面
    没报错的话safari extension会显示出来

update extension

  • 删除旧的 bundle

    Xcode Product > Clean Build Folder

  • Xcode Product > Build

    Xcode会将最新的更改打包到macOS应用程序中的扩展文件中。构建完成后,您的扩展更新即可在Safari中使用。

publish

Xcode Product > Archive > Distribute App

  1. 打包到本地
  2. 发布到app store
相关推荐
陈随易5 分钟前
为什么今天还会有新语言?MoonBit 想解决什么问题?
前端·后端·程序员
西洼工作室6 分钟前
unipp+vue3+python h5+app极验验证码集成全流程解析
前端·uni-app·全栈·极验
ZC跨境爬虫6 分钟前
跟着 MDN 学 HTML day_15:(媒体缓冲、拖动与时间范围控制)
前端·笔记·ui·html·edge浏览器·媒体
李白的天不白22 分钟前
webpack 与 webpack-cli 版本匹配问题
前端·webpack·node.js
tool24 分钟前
Hermes Agent 从安装到生产:我的完整踩坑记录
前端
kyriewen1131 分钟前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·gpt·ai·copilot
空中海1 小时前
05 React架构设计、项目实践与专家清单
前端·react.js·前端框架
人生鹿呀1 小时前
AI 情绪陪伴助手:从 0 到 1 的 PWA + 跨端应用实战
前端
人生鹿呀1 小时前
从零打造滑板文化社区平台:React 19 + Node.js + AI 微服务全栈实战
前端
网络工程小王2 小时前
【LCEL 链式调用详解】调用篇-2
java·服务器·前端·数据库·人工智能