2010-09-12 1 views
4

Я пишу надстройку Firefox и пытаюсь получить то, что в настоящее время введено в адресную строку, но каждый раз, когда я пытаюсь, я получаю нулевая ошибка. Код я используюИспользование Javascript в дополнении Firefox, чтобы получить то, что в настоящее время введено в строку url

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

Однако, когда я делаю это, ошибка я получаю

Ошибка в строке 1: document.getElementById ("urlbar") является null`.

У меня есть пустая вкладка с текстом, записанным в адресную строку. Это в firefox 3.6.9.

Любая помощь будет оценена по достоинству. Благодаря!

Редактировать: Если нет способа получить содержимое строки URL-адреса, перед тем как пользователь нажимает кнопку ввода, возможно ли «перехватить» то, что они набрали после нажатия клавиши ввода?

+0

Вы пишете плагин? – Kobi

+0

Да. Расширение Firefox. – Daniel

+1

Я отредактировал ваш вопрос, чтобы указать, что это звучит так, как будто вы пытаетесь его прочитать, используя обычный JavaScript html-page-context, который заставлял людей волноваться. – Kobi

ответ

0

getElementById получает элемент DOM с указанным идентификатором. Адресная строка не является элементом DOM.

Вы хотите:

var url = window.location; 
+2

Похоже, что OP хочет содержимое адресной строки, которое может быть тем, что пользователь еще не отправил. window.location вернет URL страницы, загруженной в браузер. –

+0

rchen верно с этим допущением. Я в значительной степени хочу перехватить то, что пользователь вводит, поэтому, когда они нажимают кнопку ввода, я переформатирую то, что они набрали в нечто более подходящее. – Daniel

+0

-1, больше не актуально. – Nickolay

0

Самое близкое к тому, что вы хотите window.location.href. Однако это не идеальный аксессуар для текстового поля URL, так как вы обнаружите, что ввод текста в поле URL, но не нажатие «enter» не будет изменять window.location.href. Насколько мне известно, нет прямого доступа к текстовому значению.

2

Вы не можете подключиться к тому, что напечатано в адресной строке, пока пользователь не отправит его. После того, как пользователь отправляет текст, у вас есть два варианта:

  1. Если вы пишете расширение, вы можете hook into an event when the url changes
  2. Используйте window.location.href тянуть URL страницы, загруженной в браузере.
1

вар URL = document.getElementById ("urlbar") значение.

Это работает, как и gURLBar.value.

Вопрос в каком контексте вы запускаете этот код. Вы должны запустить этот код в a browser.xul overlay и after the browser DOM is loaded.

Кроме того, да, можно перехватить то, что пользователь вводил после нажатия клавиши ввода, но для этого нет общедоступного API, поэтому вам нужно будет выяснить, как работает соответствующий код в Firefox, и заменить часть, которая отвечает для обработки Введите в строке местоположения. [править] см. Firefox addon to do something everytime a user hits Enter in the address bar

Смежные вопросы