如何在浏览器扩展和本机应用程序之间建立进程间通信?是否有任何跨平台(Linux和Mac OS X)和跨浏览器解决方案(Firefox,Chrome,Safari)?
我想到的唯一想法是使用本机Web技术,即在本机应用程序中嵌入HTTP服务器并使用XmlHttpRequest或WebSockets。然而,这听起来像笨拙的过度杀戮一些问题(例如安全性)。还有更好的选择吗?
答案 0 :(得分:9)
我认为最常用的方法是websocket连接。我能想到的两个例子是1Password和LiveReload(source code available)。
据我所知,您需要在全局页面中打开websocket连接,以避免跨域限制。
此外,过去我见过其他应用会观看和修改扩展程序的设置文件。扩展只是从它自己的设置存储中读取和写入,而另一个进程则查看首选项文件以进行更改。我相信这不太可靠,并且不符合Mac App Store的沙盒要求,因此我建议使用websockets方法。