2011-12-15 5 views
1

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

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

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

благодаря

+0

Вы можете сделать что-то действительно глупо, как выписывать текущий URL-адрес в файл каждый раз, когда он изменяется, и читать этот файл из другого процесса. –

+0

Вы можете найти решение на этой странице: http://stackoverflow.com/questions/11582607/find-url-of-current-tab-making-a-firefox-browser-add-on –

ответ

2

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

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

+0

Использование сокетов TCP только для получения URL для текущей активной вкладки звучит как overkill. Поскольку я не парень Java или Firefox, похоже, мне нужно будет «взломать» и просто написать URL-адрес файла или что-то еще как уродливое. – Iunknown

2

Я не знаю, если это лучший способ, но я думаю, что использование 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 
"http://stackoverflow.com/questions/8525428/whats-the-best-way-to-communicate-with-a-firefox-addon" 
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 
1

Интересно, если это было реализовано в Firefox или еще, если он все еще в стадии идеи: Mozilla Notifications API.

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

Смежные вопросы