Использование Javascript в дополнении Firefox, чтобы получить то, что в данный момент набрано в строке URL. - PullRequest
4 голосов
/ 12 сентября 2010

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

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

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

Ошибка в строке 1: document.getElementById ("urlbar") имеет значение null`.

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

Любая помощь будет оценена. Спасибо!

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

Ответы [ 4 ]

2 голосов
/ 12 сентября 2010

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

  1. Если вы пишете расширение, вы можете подключиться к событию, когда URL-адрес изменится
  2. Используйте window.location.href, чтобы получить URL страницы, загруженной в браузер.
1 голос
/ 13 сентября 2010

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

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

Вопрос в том, какой контекст вызапустите этот код. Вы должны запустить этот код в оверлейной программе browser.xul и после загрузки DOM браузера .

Кроме того, да, возможно перехватто, что пользователь набрал после того, как он нажал ввод, но для этого нет общедоступного API, поэтому вам нужно выяснить, как работает соответствующий код в Firefox, и заменить часть, отвечающую за обработку ввода, в строке адреса.[edit] см. Дополнение Firefox, чтобы что-то делать каждый раз, когда пользователь нажимает Enter. В адресной строке

0 голосов
/ 12 сентября 2010

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

0 голосов
/ 12 сентября 2010

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

Вы хотите:

var url = window.location;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...