1

Firefox のアドオン SDK (v1.9) で拡張機能を開発しています。私の拡張機能は、nsIContentPolicy を実装し、ブロックする URI のデータベースに対してそれらの URI をテストすることによって、リソースをブロックまたは許可します。

問題

nsIContentPolicy の shouldLoad 関数からタブ オブジェクト (利用可能な場合) にアクセスできる必要があります。

これに使用する部分は、nsISupports である shouldLoad 関数の「コンテキスト」パラメータであると想定しています。コンテキストが nsIDOMWindow ではないため、 getTabForWindow(win) を使用してみましたが、うまくいきませんでした ( Firefox アドオン SDK で要求を行ったタブを識別します) 。

4

1 に答える 1

2

contextパラメータは、ドキュメントまたは要素のいずれかです。そこから窓にたどり着くのは難しくありません。

var {Ci} = require("chrome");
if (!(context instanceof Ci.nsIDOMWindow))
{
  // If this is an element, get the corresponding document
  if (context instanceof Ci.nsIDOMNode && context.ownerDocument)
    context = context.ownerDocument;

  // Now we should have a document, get its window
  if (context instanceof Ci.nsIDOMDocument)
    context = context.defaultView;
  else
    context = null;
}

// If we have a window now - get the tab
if (context)
{
  var tabsLib = require("tabs/tab.js");
  return tabsLib.getTabForWindow(context.top);
}
else
  return null;

参考までに:NodeDocumentwindow

于 2012-08-24T16:50:10.753 に答える