Экстрактор ссылок на расширение Firefox

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

Проблема, с которой я столкнулся, заключается в получении доступа к объекту документа загруженной веб-страницы. Я пробовал document.getElementsByTag("a"), не получилось. Я пробовал content.document.getElementByTag("a"), не получилось.

В идеале я хочу, чтобы он вел себя так:

  1. веб-страница загружена.
  2. всем якорям на веб-странице присваивается атрибут onmouseover.
  3. пользователь указывает на ссылку.
  4. событие запускается, и URL-адрес ссылки извлекается и отображается в окне предупреждения.

person user375065    schedule 21.12.2010    source источник


Ответы (2)


Несколько вещей:

  1. Для сценария, вставленного в оверлей браузера, document - это документ браузера, а не веб-страницы, поэтому вам нужно content.document.
  2. Функция getElementsByTagName. Используйте консоль ошибок - она ​​должна сказать вам, что getElementsByTag не является функцией.
  3. Вы также можете просто использовать content.document.links
  4. Может быть проще просто добавить прослушиватель событий ко всему документу при его загрузке, а затем в прослушивателе событий просто сделать if (event.target instanceof HTMLAnchorElement) или что-то еще, чтобы увидеть, является ли это ссылкой.
  5. В любом случае вам, вероятно, следует удалить прослушиватели событий, когда вы закончите с ними (то есть на странице события unload).
person MatrixFrog    schedule 22.12.2010
comment
Вы имеете в виду document.addEventListener (щелкните, функция (e) {if (this.target instanceof HTMLAnchorElement) {alert (привет)}}, false); - person user375065; 22.12.2010
comment
Вы поняли правильную идею, но пропустили пункт 1. И я думаю, что this - это фактический элемент, на который был выполнен щелчок, а не событие (которое e, как вы написали в своем комментарии. - person MatrixFrog; 22.12.2010

Прочтите это руководство. Не забудьте изменить maxVersion в install.rdf (в LinkTargetFinder.xpi)

В linkTargetFinder.js в функции run () вы можете увидеть, как находить ссылки:

... allLinks = content.document.getElementsByTagName ("a") ...

person Oleg Butko    schedule 21.12.2010