响应Firefox Add-on中的地址栏键事件

时间:2009-07-27 04:21:35

标签: javascript firefox firefox-addon

我想编写一个可以实时获取地址栏内容的Firefox插件,例如,这个插件会将每个“a”更改为“A”,就像用户按下“a”一样。 问题是我在Javascript中找不到任何方法可以做到这一点,有没有办法(实时获取地址栏内容)?

5 个答案:

答案 0 :(得分:2)

你实际上并没有说你被困在哪一点。

  1. 首先,您需要创建一个覆盖主浏览器窗口(browser.xul)的简单扩展。 Building an Extension - MDCURL Fixer - good example extension

  2. 然后,您需要将一个事件监听器附加到URL栏(关键字:addEventListener,events)。你可能想听“keypress”,虽然你应该阅读有关各种活动的文档。您可以搜索Firefox或其他扩展程序的源代码,以查看它们将侦听器附加到哪个元素。您可以在DOM检查器扩展中检查DOM树(以查看可用的元素)。

  3. 在事件监听器中,您应该检查并更新位置栏中的URL(gURLBar.value,IIRC)。您还必须采取措施保护插入位置。

  4. 不要犹豫,在https://developer.mozilla.org/en/Extensions

    列出的论坛中寻求帮助

答案 1 :(得分:1)

Firefox扩展程序可以绝对控制地址栏。尝试查看omnibar扩展程序的源代码。 (要获取源代码,请安装扩展,然后浏览Firefox配置文件文件夹)

答案 2 :(得分:0)

您可能需要一个监听器来跟踪urlbar更改,例如:

gBrowser.addProgressListener(myExt_urlBarListener,  

     Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);  

此命令可以更新urlbar:

document.getElementById(comVar.URLBAR_ID.gui).value

您需要使用以上代码阅读网址,使用Javascript检测每次击键。如果您需要更多详细信息,请提取并查看firefox的其中一个恶搞插件中的代码。

答案 3 :(得分:-1)

如果您只是尝试修改地址栏的文本而不重定向用户,则无法进行此操作。

每当修改位置对象的属性时,将使用URL加载文档,就像使用修改后的URL调用window.location.assign()一样。

如果浏览器允许您使用javascript更改地址栏中的字符串而不重定向用户,则很容易发生网上诱骗。那不是你想要做的吗?

答案 4 :(得分:-1)

在JavaScript中,window.location.href会为您提供值,您可以在onkeyup上查看它,但是AFAIK,如果不按照您设置的值加载页面,则无法回写到位置字段。我的意思是,如果您执行以下操作,它将重新加载页面:

window.location.href = window.location.href.toLowerCase();

我不熟悉Firefox扩展的工作方式,但也许有一种更“原生”的方法可以做到这一点?