1

我正在开发 Firefox 的 Addon SDK (v1.9) 的扩展。我的扩展通过实现 nsIContentPolicy 并针对要阻止的 URI 数据库测试其 URI 来阻止或允许资源。

问题

我需要从 nsIContentPolicy 的 shouldLoad 函数访问选项卡对象(如果可用)。

我假设用于此的部分是 nsISupports 的 shouldLoad 函数上的“context”参数。我尝试使用 getTabForWindow(win) 没有运气,因为上下文不是 nsIDOMWindow (识别在 Firefox Addon 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 回答