在Firefox附加组件中使用Javascript来获取当前在url栏中输入的内容

时间:2010-09-12 06:39:54

标签: javascript firefox firefox-addon

我正在编写一个Firefox附加组件并试图获取当前输入到地址栏中的内容,但每次尝试时都会出现空错误。我正在使用的代码是

var url = document.getElementById("urlbar").value;

然而,当我这样做时,我得到的错误是

  

第1行出错:document.getElementById(“urlbar”)为null。

我打开一个空白标签,文字写入地址栏。这是在Firefox 3.6.9。

任何帮助将不胜感激。谢谢!

编辑:如果在用户按Enter键之前无法获取网址栏的内容,是否可以“拦截”他们按Enter键后输入的内容?

4 个答案:

答案 0 :(得分:2)

在用户提交之前,您无法挂钩到地址栏中键入的内容。用户提交文本后,您有两个选择:

  1. 如果您正在撰写扩展程序,可以hook into an event when the url changes
  2. 使用window.location.href来提取浏览器中加载的页面的网址。

答案 1 :(得分:1)

  

var url = document.getElementById(“urlbar”)。value;

这就像gURLBar.value一样有用。

问题是您运行该代码的上下文。您应该在a browser.xul overlayafter the browser DOM is loaded中运行该代码。

此外,是的,它可以截取用户输入后输入的内容,但是没有公开的API,所以你必须弄清楚Firefox中的相关代码如何工作并替换负责的部分。处理在位置栏中输入。 [edit]请参阅Firefox addon to do something everytime a user hits Enter in the address bar

答案 2 :(得分:0)

getElementById获取具有指定ID的DOM元素。地址栏不是DOM元素。

你想:

var url = window.location;

答案 3 :(得分:0)

最接近你想要的是window.location.href。但是,它不是URL文本框中的完美访问者,因为您会发现在URL框中键入但不按“enter”不会修改window.location.href。据我所知,没有办法直接访问文本值。