2

私はFirefoxの拡張機能を書いています。基本的に getElementsByClassName を使用して特定のクラスを検索し、ヒットした場合は次を使用してページをリダイレクトしています: gBrowser.loadURI 問題は、マウスの中ボタンでリンクを開くと、そのリンクが背景タブ。したがって、そのページで上記のクラス基準に該当するヒットがあった場合、アクティブなタブがバックグラウンドのタブではなくリダイレ​​クトされますが、これは間違った動作です。したがって、基本的には同様の loadURI 関数を使用したいのですが、現在アクティブなタブではなく、特定のタブに対して使用します。loadURI の代わりに window.location = " http://www.google.com/ " も使用できます。しかし、どういうわけかwindow.locationを使用すると、ffウィンドウのすべてのボタンがフルビューのように消えます。非アクティブなタブをリダイレクトするためのアイデアはありますか?

4

1 に答える 1

3

次のようなコードを使用していると仮定します (そう思われますが、今後の参考のためにコードを提供してください)。

function pageLoad(event) {
  var doc = event.originalTarget;
  if (/* doc matches class */) {
    gBrowser.loadURI(newURI, ...);
  }
}

addEventListener("load", function () {
  gBrowser.addEventListener("load", pageLoad, true);
}, false);

リスナーを次のように変更します。

function pageLoad(event) {
  var doc = event.originalTarget;
  if (/* doc matches class */) {
    gBrowser.getBrowserForDocument(doc).loadURI(newURI, ...);
  }
}

もちろん、エラー処理を行うのが最適です。

<tabbrowser>別名gBrowserを参照してください。そしてbrowser(それgetBrowserForDocument()が戻ってきます)。

(私は記憶からこれを行いました。少しいじる必要があるかもしれません)

于 2013-08-27T22:56:12.120 に答える