0

有没有办法在请求发送到网站之前获取 url 字符串?我在这里找到了一篇关于它的帖子:

https://forums.mozilla.org/addons/viewtopic.php?f=7&t=11259&p=26111

但我在插件 SDK 中找不到任何关于如何“连接到 Browser:OpenLocation 命令”的信息。

基本上我正在做的是这样的:

  1. 检查即将被请求的 url 以查看它是否与我的 RegExp 匹配。
  2. 如果匹配,请更改发送到网站的 userAgent。(通过设置general.userAgent.override)

因此,在页面开始加载后我无法检查 url,因为请求已经发送,我宁愿不重新加载页面,因为它会延迟浏览。

谢谢!

4

1 回答 1

1

是的,请在此处查看文档: https ://developer.mozilla.org/en-US/docs/XUL/School_tutorial/Intercepting_Page_Loads#HTTP_Observers

此代码适用于附加 sdk,它检查 url 是否匹配mysite,然后MyBrowser/1.0为该站点设置一个用户代理。这仅在检测到时才进行更改,而不是使用 pref userAgent.orverride。

var chrome = require("chrome");

chrome.Cc["@mozilla.org/observer-service;1"].getService( chrome.Ci.nsIObserverService ).addObserver({
    observe : function(subject, topic, data) {
            var channel = subject.QueryInterface( chrome.Ci.nsIHttpChannel );
            if ( /mysite/.test( channel.originalURI.host ) ) {
                channel.setRequestHeader("User-Agent", "MyBrowser/1.0", false);
            }
    }
},"http-on-modify-request",false);
于 2013-02-21T21:57:49.000 回答