0

Firefoxの拡張機能をプログラムする方法を学んでいます。新しいメニューを作成しました。メニュー項目をクリックすると、コンテンツディレクトリに含まれるローカルファイルを含む新しいタブがフォアグラウンドで開きます。

例えば:

メニュー->アイテム1

Item1を選択したときに、/ myextension / content/content.htmlにあるものを含む新しいタブをフォアグラウンドで開きたいです。

これを行う方法はどこで確認できますか?


わかりやすくするために、ローカルファイルを新しいタブで開くことができます。新しいフォーカスされたタブで開く方法がわかりません。

4

1 に答える 1

1

次の関数を使用してタブを開き、まだ開いていないことを確認して、フォーカスを切り替えます。

関数OpenAndReuseOneTabPerURL(url)
{{

    var wm = Components.classes ["@ mozilla.org / appshell / window-mediator; 1"]。getService(Components.interfaces.nsIWindowMediator);
    var browserEnumerator = wm.getEnumerator( "navigator:browser");

    //各ブラウザインスタンスでURLを確認します
    var found = false;
    while(!found && browserEnumerator.hasMoreElements())
    {{
        var browserWin = browserEnumerator.getNext();
        var tabbrowser = browserWin.gBrowser;

        //このブラウザインスタンスの各タブを確認します
        var numTabs = tabbrowser.browsers.length;
        for(var index = 0; index <numTabs; index ++)
        {{

            var currentBrowser = tabbrowser.getBrowserAtIndex(index);
            if(url == currentBrowser.currentURI.spec)
            {{

                //URLはすでに開かれています。このタブを選択します。
                tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes [index];

                // *this*ブラウザウィンドウにフォーカスします
                browserWin.focus();

                見つかった=true;
                壊す;

            }

        }

    }

    //URLが開いていません。今すぐ開いてください。
    if(!found)
    {{

        var最近のウィンドウ=wm.getMostRecentWindow( "navigator:browser");
        if(recentWindow){

            //既存のブラウザウィンドウを使用します
            最近のウィンドウ.delayedOpenTab(url、null、null、null、null);

        } そうしないと {

            //ブラウザウィンドウが開いていないので、新しいウィンドウを開きます。
            window.open(url);

        }

    }

}

次のように使用します。

OpenAndReuseOneTabPerURL("http://yoururl.com");

于 2012-09-18T08:30:40.960 に答える