Как лучше всего общаться с аддоном Firefox? - PullRequest
1 голос
/ 15 декабря 2011

Мне нужно, чтобы я мог получить URL с активной вкладки в Firefox.DDE не работает с несколькими экземплярами, поэтому я подумал, что мог бы создать аддон, который устанавливает глобальный атом или что-то в этом роде.

Я также подумал, что, возможно, я мог бы использовать буфер обмена, но я не хочу перезаписывать какой-либо существующий текст, и пользовательские типы буферов обмена не поддерживаются.

Я не хочухочу прибегнуть к написанию файла просто для того, чтобы сделать простой IPC ... поэтому, прежде чем я сделаю это ... есть ли лучший выбор для чего-то такого простого.

спасибо

Ответы [ 3 ]

2 голосов
/ 21 января 2012

Я не знаю, лучший ли это способ, но я думаю, что использование MozRepl поможет вам. MozRepl позволит вам взаимодействовать с Firefox через Telnet.

% telnet localhost 4242
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Welcome to MozRepl.

repl> content.location.href
"/5175166/kak-luchshe-vsego-obschatsya-s-addonom-firefox"
repl> 

После установки MozRepl, вы можете использовать этот маленький скрипт ruby, чтобы получить URL текущей вкладки opend.

require 'net/telnet'

t = Net::Telnet.new('Port' => 4242)
t.waitfor(/repl.*>/)
puts eval(t.cmd("content.location.href").split[0])
t.close
2 голосов
/ 16 декабря 2011

Обычный способ связи приложения с надстройкой Firefox - через сокеты TCP.Вы создаете nsIServerSocket экземпляр, вызываете init() для него и затем asyncListen().Когда приложение подключается к вашему сокету, вызывается метод onSocketAccepted вашего слушателя, и вы получаете экземпляр nsITransport , из которого вы можете читать или записывать данные (используйте NetUtil.jsm для чтения из входного потока асинхронно).

Относительно простой пример реализации см. mozSocket.jsm (не используется NetUtils.jsm для чтения данных).

1 голос
/ 01 мая 2013

Интересно, было ли это реализовано в Firefox или все еще находится в стадии разработки API уведомлений Mozilla .

У Google есть расширения GCM для Chrome.

...