当前位置: 首页 > 知识库问答 >
问题:

如何在Firefox page-mod中进行重定向?

谢锦程
2023-03-14

我正试图将我的谷歌Chrome扩展移植到Firefox插件SDK,我需要扩展来过滤网页从我的网站和使重定向。例如,如果用户打开“http://example.com/special”,我需要将他发送到同一个浏览器选项卡中的“http://example.com/redirect”。

var pageMod = require("page-mod").PageMod({
    include: "*",
    contentScriptWhen: "start",
    contentScript: "",

    onAttach: function(worker) {
       if (worker.tab.url == worker.url && 
           worker.url.indexOf("example.com/special") > -1) {
           worker.tab.url = "http://example.com/redirect";
       }
    }
});

共有1个答案

侯令雪
2023-03-14

最好的办法是在较低的层次上做:

const { Cc, Ci, Cr } = require("chrome");

var events = require("sdk/system/events");
var utils = require("sdk/window/utils");


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

    // Here you should evaluate the url and decide if make a redirect or not.
    // Notice that "shouldIredirect" and "newUrl" are guessed objects you must replace!
    if (shouldIredirect) {
      // If you want to redirect to another url, the you have to abort current request
      // See https://developer.mozilla.org/en-US/docs/XUL/School_tutorial/Intercepting_Page_Loads
      channel.cancel(Cr.NS_BINDING_ABORTED);

      // Aet the current gbrowser object (since the user may have several windows and tabs) and load the fixed URI
      var gBrowser = utils.getMostRecentBrowserWindow().gBrowser;
      var domWin = channel.notificationCallbacks.getInterface(Ci.nsIDOMWindow);
      var browser = gBrowser.getBrowserForDocument(domWin.top.document);

      browser.loadURI(newUrl);
    } else {
      // do nothing, let Firefox keep going on the normal flow
    }
  };
};

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

如果您想在actiton中看到这段代码,请看一下这个addon(免责声明:这是我开发的addon)。

 类似资料:
  • 问题内容: 我正在为教练创建一个网站,以通过使用社交媒体帮助人们拥有更健康的生活。目前,我正在通过ExpressJS服务器中的OAuth(前端为AngularJS)访问Twitter。 从AngularJS网站: 在200到299之间的响应状态代码被视为成功状态,并将导致调用成功回调。请注意,如果响应是重定向,则XMLHttpRequest将透明地跟随它,这意味着不会为此类响应调用错误回调。 我的

  • 如何在Falcon中进行“内部重定向”? 我设置静态路由: 而且我想将'/'重定向到'/index.html',但不是作为超文本传输协议3xx,我想在内部进行,这样就浏览器而言,路径仍然是'/'但内容是什么'/静态/index.html'的内容。

  • 问题内容: 如何使用JavaScript从另一个页面重定向到页面? 问题答案: 要重定向到另一个页面,可以使用:

  • 问题内容: 我有一个Web应用程序,可以将用户直接发送到某些特定页面(例如,他可以查看或编辑项目的页面)。为此,我们提供了一个特定的URL。这些网址位于 外 电流网络的应用程序(即,它们可以存在于另一网络的应用程序,或电子邮件)。 网址看起来像,其中: action 表示将用户重定向到的页面。您可以将其视为中的任何JSF操作的。 actionParam 是上一个操作的参数(通常是商品ID) 因此,

  • 机器人必须每隔60秒做一件事。我尝试使用create_task,但它不起作用(bot启动了,但什么也没发生)。如何实现这一点?

  • 本文向大家介绍如何使用jQuery进行页面重定向?,包括了如何使用jQuery进行页面重定向?的使用技巧和注意事项,需要的朋友参考一下 要重定向到jQuery中的另一个网页,请使用。您可以尝试运行以下代码以重定向到另一个网页- 示例