我正在开发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)
答案 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;