Javascript 有可能知道HTTPRequest的目标DOMWindow吗?

Javascript 有可能知道HTTPRequest的目标DOMWindow吗?,javascript,gwt,firefox-addon,httprequest,Javascript,Gwt,Firefox Addon,Httprequest,我正在开发一个firefox扩展,它要求我通过过滤掉一些HttpRequest来拦截页面加载。 我是按照指示做的。请注意,我的问题来自此链接的内容 我使用了第节中给出的方法。它成功了,我确实能够提取被发送请求的各个URL 然而,我真正需要的另一件事是获取目标DOM窗口,在该窗口中,与HTTPRequest相关的内容将被加载。可以使用httpobsers吗 在上面的链接中,使用描述了另一种方法 我也试过了。onLocationChange()方法仅返回url栏中的位置更改。是否有可能使用这些进程侦

我正在开发一个firefox扩展,它要求我通过过滤掉一些HttpRequest来拦截页面加载。 我是按照指示做的。请注意,我的问题来自此链接的内容

我使用了第节中给出的方法。它成功了,我确实能够提取被发送请求的各个URL

然而,我真正需要的另一件事是获取目标DOM窗口,在该窗口中,与HTTPRequest相关的内容将被加载。可以使用httpobsers吗

在上面的链接中,使用描述了另一种方法

我也试过了。onLocationChange()方法仅返回url栏中的位置更改。是否有可能使用这些进程侦听器获取HTTPRequest URL?因为如果是这样,那么如果我理解正确,aWebProgress.DOMWindow会给我所需的窗口


注意:我将gwt用于扩展,将JSNI用于上述部分。

您通常可以使用附加到请求或其加载组的(遗憾的是几乎没有文档记录)来实现这一点。以下是您将如何做到这一点:

函数getWindowForRequest(请求) { if(请求组件的实例.interfaces.nsirect) { 尝试 { if(请求通知回调) { return request.notificationCallbacks .getInterface(Components.interfaces.nsILoadContext) .关联窗口; } }捕获(e){} 尝试 { if(request.loadGroup&&request.loadGroup.notificationCallbacks) { return request.loadGroup.notificationCallbacks .getInterface(Components.interfaces.nsILoadContext) .关联窗口; } }捕获(e){} } 返回null; }
请注意,此函数偶尔会返回
null
——并非每个HTTP请求都与窗口关联。

非常感谢您的回复!我有个小问题。该方法是否应与问题中提到的HTTPObserver方法一起使用?如果是,对于函数中的参数“request”,传递参数asObject(在上下文中)就足够了吗?SaurabhAgarwal:这两个问题都是肯定的-它应该得到一个
nsirest
/
nsIChannel
,它对应于
http on modify request
observer中的
asobject
参数。是否可以使用此方法从loadContext获取docShell?我想获取它加载到的选项卡的xul元素。我可以使用loadContext fine@Noit获得所有html窗口和dom:您总是可以获得窗口的docShell。但是,如果我理解正确,并且您的目标是为窗口找到tab元素,请参见。如果您确实需要docShell,请将示例代码中的
QueryInterface(Ci.nsidochelltreeitem)
更改为
QueryInterface(Ci.nsidochell)
。@WladimirPalant衷心感谢您!我将尝试并修复我在MDN上发布的那个糟糕的示例。我真的很喜欢学习和更新MDN,并在制作一些很酷的插件的同时帮助他人。我是FF的忠诚者,反谷歌的chrome哈哈