2013-04-06 7 views
6

GreasemonkyスクリプトをFirefoxの拡張機能に変換しようとしていますが、新しいタブを開いたときに拡張機能を自動的に任意のWebページに添付しようとしています。高度な設定とメニューオプションを利用したいので、私はGreasemonkeyからスクリプトを変換しています。新しく開いたタブのウィンドウオブジェクトにどうやってアクセスできますか? [firefox extension内]

私はこの使用してタブにアクセス:

var container = gBrowser.tabContainer; 
container.addEventListener("TabOpen", tabAdded, false); 

function tabAdded(event) { 
var newtabwindow = event.target.____ //I don't know what goes here 
//attach script to newtabwindow 
} 

をし、私の目標は、それがこの機能を使用してロードしたら、新しいタブでドキュメントにスクリプトを追加することです:

function scriptrunner(targetwindow) { 
var myScript = targetwindow.content.document.createElement('script'); 
    myScript.type = 'text/javascript'; 
    myScript.setAttribute('src','chrome://addonname/content/addonscript.js'); 
    targetwindow.content.document.getElementsByTagName('head')[0].appendChild(myScript); 
} 

この関数の動作oncommand = "scriptrunner(window)"を指定してツールバーボタンにアタッチしたときにスクリプトを現在のページにアタッチすることはできますが、新しく開いたタブでどのようにウィンドウにアクセスできるかわかりません。式からウィンドウを開き、別の方法で文書にアクセスします。

+0

'var newtabwindow = event.target;'は動作しませんか? – Sukima

+2

あなたの説明からは、Mozillaの[アドオンSDK](https://addons.mozilla.org/en-US/developers/docs/sdk/latest/)がその仕事に適しているようです。 [page-mod](https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/page-mod.html)を使用して、任意のWebページにコンテンツスクリプトを添付することができますURLがパターンと一致するか、[tabs](https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/tabs.html)モジュールを使用してください。 – ZER0

答えて

2

browser要素のプロパティであるcontentWindowを探しています。

tabが指定されている場合はgBrowser.getBrowserForTabと呼び出してtabに関連付けられたbrowser要素を取得します。次に、browser要素のcontentDocumentまたはcontentWindowプロパティにアクセスします(これらは既に慣れているdocumentおよびwindowオブジェクトに相当します)。

また、私が間違っていない場合、tabのイベントを聞くことに加えて、の"load"イベントを聞く必要があります。

+1

[ページの読み込み](https://developer.mozilla.org/en-US/docs/Code_snippets/On_page_load)の例でTabOpenイベントのリッスンを削除する必要があることがわかりました。はい、ウィンドウのイベントリスナーをロードします。 – user2253229

関連する問題