Sau*_*wal 4 javascript gwt httprequest firefox-addon
我正在开发一个firefox扩展,它要求我通过过滤掉一些HTTPRequests来拦截页面加载.我是按照这里给出的说明做到的.请注意,我的问题来自此链接的内容.
我使用了HTTPObservers部分给出的方法.它确实有效,我确实能够提取发出的请求的相应网址.
但是,我真正需要的另一件事是获取目标DOM窗口,其中将加载与HTTPRequest相关的内容.是否可以使用HTTPObservers?
在上面的链接中,使用WebProgressListeners描述了另一种方法.
我也试过了.onLocationChange()方法仅返回url栏中的位置更改.是否有可能使用任何这些进度监听器获取HTTPRequest URL?因为如果是这样,那么如果我理解正确,aWebProgress.DOMWindow会给我我需要的窗口.
注意:我使用gwt作为扩展,使用JSNI作为上述部分.
您通常可以通过使用附加到请求或其加载组的nsILoadContext接口(遗憾地记录得很少)来实现.以下是您将如何做到这一点:
function getWindowForRequest(request)
{
if (request instanceof Components.interfaces.nsIRequest)
{
try
{
if (request.notificationCallbacks)
{
return request.notificationCallbacks
.getInterface(Components.interfaces.nsILoadContext)
.associatedWindow;
}
} catch(e) {}
try
{
if (request.loadGroup && request.loadGroup.notificationCallbacks)
{
return request.loadGroup.notificationCallbacks
.getInterface(Components.interfaces.nsILoadContext)
.associatedWindow;
}
} catch(e) {}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
请注意,此函数有时会返回null- 并非每个HTTP请求都与窗口关联.