gpt4 book ai didi

javascript - 如何确定 http 请求的位置/来源(地址栏)?

转载 作者:行者123 更新时间:2023-11-30 12:39:42 26 4
gpt4 key购买 nike

因此,当他尝试加载的页面符合我的条件(正则表达式)时,我试图将浏览器重定向到另一个网页。目前它看起来像这样:(想出了 here )

function listener(event) {
var channel = event.subject.QueryInterface(Ci.nsIHttpChannel);
var url = event.subject.URI.spec;

if (isToBeRedirected(url)) {
// replace url
}
}

exports.main = function() {
events.on("http-on-modify-request", listener);
}

但问题是,这也将替换图像的 url,例如嵌入在页面中的图像。我的问题是,是否有一种方法可以通过输入 url 或单击页面链接来改变 http 请求?所以只要每次地址栏中出现一个 url。
我考虑过读取当前选项卡的 url 并将其与请求 url 进行比较,但我还不能找到确切的方法。

最佳答案

我有一个想法。

如果您执行 console.log(Ci.nsIHttpChannel),您会看到它有一堆 flag,请参阅底部的 img。

所以我正在考虑通过测试 Ci.nsIHttpChannel.LOAD_INITIAL_DOCUMENT_URI 的标志来测试它是否是主要负载,这意味着它不在子框架中,而是在选项卡的整个文档中。如果是整个文档,则可能来自链接、网址栏或搜索栏。

那么试试这个:

function listener(event) {
var channel = event.subject.QueryInterface(Ci.nsIHttpChannel);
var url = event.subject.URI.spec;

if (channel.loadFlags & Ci.nsIHttpChannel.LOAD_INITIAL_DOCUMENT_URI) {
//the whole document of the tab is changing
if (isToBeRedirected(url)) {
// replace url
}
}
}

exports.main = function() {
events.on("http-on-modify-request", listener);
}


我的另一个想法是,如果您只想更改网址栏。比添加一个事件监听器来更改 url 栏值。更改后,如果用户点击回车或点击进入,则它会注册观察者。然后在测试 Ci.nsIHttpChannel.LOAD_INITIAL_DOCUMENT_URI 之后注销观察者。

关于javascript - 如何确定 http 请求的位置/来源(地址栏)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24886858/

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