0

我们将开发 Safari 扩展。我们有 Chrome 扩展程序。

并且我们想在 safari 扩展中合并相同的代码,有没有可能这样做。

但是根据 chrome 结构,Chrome 使用 Background Js 与 Addon 和内部 JS 进行通信。通过 chrome.runtime.sendMessage。chrome.runtime.sendMessage({ 我们可以在 safari Extension 中使用类似的东西吗?一个可以处理所有消息传递的背景文件?

我们可以通过 Post Messaging/Dispatch Message 进行沟通;

附加组件/全局 =>> 注入脚本。=>> 附加/全局文件。

但是我们想通过 Post/Dispatch Messaging 在 JavaScript 文件(加载了 Global/Popover Html 文件)之间进行通信,就像在 Chrome(chrome.runtime.sendMessage)中一样。

Local.JS =>> BackGruound.Js =>> Local.JS
BackGruound.Js => Content.Js =>> 全局。

4

1 回答 1

0

Apple 有一个关于将 Chrome 扩展转换为 Safari 扩展的指南:

如果您的 Chrome 扩展程序使用浏览器或页面操作,请使用 Safari 中的工具栏项。如果您在 Chrome 中使用弹出窗口,请在 Safari 中使用弹出窗口。如果您使用背景页面,请使用 Safari 中的全局页面。您还可以在运行时修改 UI 的某些部分,例如,您可以禁用工具栏项并添加上下文菜单项。

Safari 中发生的事件基于文档对象模型事件和 UIEvents 中描述的 DOM 事件系统。要设置事件侦听器,请在应侦听事件的对象上调用 addEventListener 方法。SafariEventTarget 或其子类的任何实例都可以注册事件侦听器。出于安全原因,您只能在自己的扩展程序中发送消息。

Safari API 分为两部分:运行在 Web 内容区域内部的 Web 内容层和运行在其外部的应用程序层。要在不同层中运行的脚本之间进行通信,请使用消息。在 Safari 中,短时消息传递和长时连接没有区别;您对两者都使用相同的方法。

要在全局页面和注入脚本之间发送消息,您可以使用 Safari 的Messages and Proxies

于 2016-09-29T20:32:09.287 回答