监听器在将其加载到Mozilla SDK之前更改URL

时间:2014-03-30 00:38:20

标签: firefox firefox-addon firefox-addon-sdk

我正试图获得类似于对mozilla sdk上的位置栏进行拼写错误修正的内容。用户在位置栏上输入一个URL,并在加载之前进行更改。我试过了:

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

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

以上是我发现的会抓住用户试图进入的网站。我还找到了sdk/system/events,但我发现我唯一可以使用的事件是http-on-modify-request,这确实捕获了每个http请求。问题是,您无法修改该请求的网址。

为了解决这个问题,我见过2个选项:

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

或解决方案解释here我不确定是否可行(不适用于mozilla sdk)。

所以基本上我现在的问题可以解决:

- 在开始加载之前从位置栏捕获网址的方法&改变它(我没有在sdk上看到任何东西)或 - 一种了解请求何时对应于用户尝试在位置栏中加载的网站的方法 - 一种修改请求的方法(网址)

2 个答案:

答案 0 :(得分:5)

我在Google Redirects Fixer的加载项source code you can see here中执行此操作。

基本上,您正在寻找的是收听http-on-modify-request事件。如果您遵循该代码,您将会看到intercept the request的方法,以及在某些条件下,abort itreplace it with a new request

希望它有所帮助。

答案 1 :(得分:1)

  

" sdk / pagemod如此处所示。问题是它在页面开始渲染时运行,而不是在开始下载之前运行。"

在使用contentScriptWhen: start加载任何内容之前,您可以告诉它附加。

  

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