如何从nsIContentPolicy shouldLoad中加载资源获取选项卡

时间:2012-08-24 16:08:55

标签: firefox firefox-addon firefox-addon-sdk

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

问题

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

我假设要使用的部分是shouldLoad函数的“context”参数,它是nsISupports。我尝试使用getTabForWindow(win)没有运气,因为上下文不是nsIDOMWindow(Identify tab that made request in Firefox Addon SDK

1 个答案:

答案 0 :(得分: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