gpt4 book ai didi

javascript - 是否有可能知道 HTTPRequest 的目标 DOMWindow?

转载 作者:搜寻专家 更新时间:2023-11-01 05:25:15 27 4
gpt4 key购买 nike

我正在开发一个 firefox 扩展,它需要我通过过滤掉一些 HTTPRequests 来拦截页面加载。我使用给定的说明做到了 here .请注意,我的问题来自此链接的内容。

我使用了 HTTPObservers 部分给出的方法.它奏效了,我确实能够提取所发送请求的相应 URL。

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

在上面的链接中,使用 WebProgressListeners 描述了另一种方式。 .

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

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

最佳答案

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

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;
}

请注意,此函数偶尔会返回 null - 并非每个 HTTP 请求都与窗口相关联。

关于javascript - 是否有可能知道 HTTPRequest 的目标 DOMWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com