浏览器扩展和本机应用程序之间的进程间通信

时间:2014-04-23 20:30:30

标签: google-chrome-extension firefox-addon ipc safari-extension browser-extension

如何在浏览器扩展和本机应用程序之间建立进程间通信?是否有任何跨平台(Linux和Mac OS X)和跨浏览器解决方案(Firefox,Chrome,Safari)?

我想到的唯一想法是使用本机Web技术,即在本机应用程序中嵌入HTTP服务器并使用XmlHttpRequest或WebSockets。然而,这听起来像笨拙的过度杀戮一些问题(例如安全性)。还有更好的选择吗?

1 个答案:

答案 0 :(得分:9)

我认为最常用的方法是websocket连接。我能想到的两个例子是1Password和LiveReload(source code available)。

据我所知,您需要在全局页面中打开websocket连接,以避免跨域限制。

此外,过去我见过其他应用会观看和修改扩展程序的设置文件。扩展只是从它自己的设置存储中读取和写入,而另一个进程则查看首选项文件以进行更改。我相信这不太可靠,并且不符合Mac App Store的沙盒要求,因此我建议使用websockets方法。