在Firefox插件中使用Javascript获取url栏中当前键入的内容

在Firefox插件中使用Javascript获取url栏中当前键入的内容,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我正在编写一个Firefox插件,并试图获取当前在地址栏中键入的内容,但每次尝试时,都会出现一个空错误。我使用的代码是 var url = document.getElementById("urlbar").value; 然而,当我这样做时,我得到的错误是 第1行错误:document.getElementById(“urlbar”)为null` 我打开了一个空白选项卡,其中的文本写入地址栏。这是在firefox 3.6.9中 任何帮助都将不胜感激。谢谢 编辑:如果在用户按enter键之前无法

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

var url = document.getElementById("urlbar").value;
然而,当我这样做时,我得到的错误是

第1行错误:document.getElementById(“urlbar”)为null`

我打开了一个空白选项卡,其中的文本写入地址栏。这是在firefox 3.6.9中

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


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

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

你想要:

var url = window.location;

最接近您需要的是
window.location.href
。但是,对于URL文本框中的内容,它并不是一个完美的访问器,因为您会发现,在URL框中键入内容但不按“enter”不会修改
window.location.href
。据我所知,无法直接访问文本值。

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

  • 如果您正在编写扩展,您可以
  • 使用window.location.href提取浏览器中加载的页面的url
  • var url=document.getElementById(“urlbar”).value

    这是可行的,
    gURLBar.value

    问题是在什么上下文中运行代码。您应该在和中运行该代码


    此外,可以截取用户在按enter键后键入的内容,但没有用于截取内容的公共API,因此您必须了解Firefox中的相关代码是如何工作的,并替换位置栏中负责处理enter键的部分。[编辑]请参见

    听起来OP想要地址栏的内容,这可能是用户尚未提交的内容。window.location将返回在浏览器中加载的页面的url。rchen使用此假设是正确的。我很想截取用户键入的内容,所以当他们按enter键时,我会将他们键入的内容重新格式化为更合适的内容。我对你的问题进行了编辑,以表明这一点,听起来好像你试图使用常规的html页面上下文JavaScript来阅读它,这让人们感到不安。