Firefox 侦听器在将url加载到Mozilla SDK之前更改url

Firefox 侦听器在将url加载到Mozilla SDK之前更改url,firefox,firefox-addon,firefox-addon-sdk,Firefox,Firefox Addon,Firefox Addon Sdk,我正在尝试为mozilla sdk上的位置栏进行类似于打字错误更正的操作。用户在locationbar上输入一个url,并在加载之前对其进行更改。我试过: sdk/pagemod,如图所示。问题是它在页面开始呈现时运行,而不是在开始下载之前 sdk/tabs=>它没有在开始加载网站之前调用的事件 以上是我发现的能够抓住用户试图进入的网站的东西。我也发现了,但我发现唯一可以使用的事件是http on modify请求,它确实捕获每个http请求。问题是,您无法修改该请求的url 为了解决这个问题,

我正在尝试为mozilla sdk上的位置栏进行类似于打字错误更正的操作。用户在locationbar上输入一个url,并在加载之前对其进行更改。我试过:

sdk/pagemod,如图所示。问题是它在页面开始呈现时运行,而不是在开始下载之前

sdk/tabs=>它没有在开始加载网站之前调用的事件

以上是我发现的能够抓住用户试图进入的网站的东西。我也发现了,但我发现唯一可以使用的事件是http on modify请求,它确实捕获每个http请求。问题是,您无法修改该请求的url

为了解决这个问题,我看到了两种选择:

=>获取当前选项卡并在其中加载新url。问题很明显,请求可能不是来自用户试图加载的url,而是来自页面html中的url。我尝试将请求url与tabs.activeTab.url进行比较,但它是在发送http on modify请求事件后设置的

或者该解决方案解释说我不确定是否可行(它不适用于mozilla sdk)

所以我现在的问题基本上可以通过以下方法解决:

-一种在开始加载和更改url之前从位置栏捕获url的方法(我在sdk上没有看到任何相关内容)或 -一种了解请求何时对应于用户试图在位置栏或位置栏中加载的网站的方法 -一种修改请求(url)的方法

我在我的插件中这样做

基本上,你要找的是听活动。如果您遵循该代码,您将看到如何在特定条件下和

希望能有帮助

sdk/pagemod如图所示。问题是它在页面开始呈现时运行,而不是在页面开始下载之前运行

您可以告诉它在加载任何内容之前附加

在文档元素插入DOM之后,但在DOM内容本身加载之前,立即加载内容脚本


如果您最终没有使用sdk,请使用以下内容:谢谢,问题中所示的重定向方式正是我所寻找的。酷哥,是的,请使用该频道。redirectTo函数,只需注意其FF20+功能,对于FF20之前的支持,您必须中止该频道,并替换itI以这种方式执行。我看了你的代码来做这件事,我已经使用自己的插件好几个星期了,但是我发现了这个方法的一个问题:或者可能是我的代码中的一个bug,我不理解它。问题是:请求可以来自与html链接的文件(favicon、图像等)。在这种情况下,更改当前选项卡的内容是不正确的。我现在没有我的开发环境来重新检查这一点,但正如我在问题中所说的,我尝试了类似的方法:因此,我确实使用了contentScriptWhen:start,页面将在更改域之前显示一会儿。我认为这是有意义的,因为pagemod将自身连接到网页,所以这可能意味着不是在完成加载之后,而是在启动它之后(文档必须存在)。