2011-12-15 19 views
1

FirefoxのアクティブなタブからURLを取得する必要があります。 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.jsmNetUtils.jsmをデータの読み取りに使用しない)を参照してください。

+0

TCPソケットを使用するだけで現在アクティブなタブのURLは過度のように聞こえる。私はJavaやFirefoxの人ではないので、私は 'ハック'に行かなければならないように見え、URLをファイルや醜いものとして書くだけです。 – Iunknown

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をインストールした後、この小さなルビースクリプトを使用して、現在開いているタブのURLを取得できます。

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にはChrome拡張機能用のGCMがあります。

関連する問題