我需要能够从Firefox的活动标签中获取网址。 DDE不适用于多个实例,因此我认为我可以构建一个设置全局原子的插件。
我还认为也许我可以使用剪贴板,但我不想覆盖任何现有文本,似乎不支持自定义剪贴板类型。
我不想仅仅为了简单的IPC而编写文件...所以在我这样做之前...对于这么简单的事情是否有更好的选择。
感谢
答案 0 :(得分:2)
从应用程序到Firefox附加组件的通信方式是通过TCP套接字。您创建了一个nsIServerSocket实例,在其上调用init()
,然后asyncListen()
。当应用程序连接到您的套接字时,将调用侦听器的onSocketAccepted方法,并获得一个nsITransport实例,您可以从中读取数据或写入(使用NetUtil.jsm从输入中读取异步流。)
对于一个相对简单的示例实现,请参阅mozSocket.jsm(不使用NetUtils.jsm
来读取数据)。
答案 1 :(得分:2)
我不知道它是否是最佳方式,但我认为使用MozRepl会对您有所帮助。 MozRepl将使您能够通过telnet与firefox进行交互。
% telnet localhost 4242
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to MozRepl.
repl> content.location.href
"http://stackoverflow.com/questions/8525428/whats-the-best-way-to-communicate-with-a-firefox-addon"
repl>
安装MozRepl之后,您可以使用这个小ruby脚本来获取当前opend选项卡的URL。
require 'net/telnet'
t = Net::Telnet.new('Port' => 4242)
t.waitfor(/repl.*>/)
puts eval(t.cmd("content.location.href").split[0])
t.close
答案 2 :(得分:1)
我想知道这是否已在Firefox中实现,或者它是否还处于创意阶段: Mozilla Notifications API
Google拥有适用于Chrome扩展程序的GCM。