通过在扩展名中的旅行时扩展中的邮件/发送消息进行通信b / w JavaScript文件

时间:2016-08-19 13:08:57

标签: javascript safari-extension safari-web-inspector

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

我们希望在safari扩展中合并相同的代码,是否有可能这样做。

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

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

Add-on / Global =>>注入的脚本。 =>>附加/全局文件。

但我们希望通过像Chrome(chrome.runtime.sendMessage)这样的Post / Dispatch Messaging在JavaScript文件(加载Global / Popover Html文件)之间进行通信。

Local.JS =>> BackGruound.Js =>> Local.JS
BackGruound.Js => Content.Js =>>全球性的。

1 个答案:

答案 0 :(得分:0)

Apple有Converting Chrome Extensions to Safari Extensions指南:

  

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

     

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

     

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

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