Существует ли более быстрый способ добавления значков рядом с URL-адресами / ссылками на веб-странице - альтернатива использованию события «onload»? - PullRequest
0 голосов
/ 26 ноября 2010

Я пишу дополнение Firefox, которое добавляет маленькие значки рядом со всеми URL-адресами на веб-странице.

То, как я сейчас это делаю, таково:

  1. window.addEventListener ("load", AddIconsToURLs, false);
  2. В функции AddIconsToURLs: Получить все элементы по имени тега "а" Для каждого элемента «a» добавьте элемент «img».

Однако для некоторых веб-страниц значки появляются много времени, так как событие onload занимает много времени.

Есть ли более быстрый способ сделать это? Вместо ожидания загрузки всех ссылок и добавления значков рядом с каждой из них, есть ли способ добавить значок рядом со ссылкой, как только эта конкретная ссылка будет загружена?

Любая помощь приветствуется. Спасибо.

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

Что вы хотите сделать с изображениями?Что-нибудь особенное?Если это только для внешнего вида, гораздо проще было бы загрузить таблицу стилей CSS в ваше дополнение и использовать псевдоэлемент :after:

a:after {
  content: url('chrome://youraddon/skin/imagefile.png');
}

Не требуется обработка JavaScript:)

Пользовательский CSS-файл можно загрузить с помощью:

var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
          .getService(Components.interfaces.nsIStyleSheetService);
var ios = Components.classes["@mozilla.org/network/io-service;1"]
          .getService(Components.interfaces.nsIIOService);
var uri = ios.newURI("chrome://youraddon/skin/cssfile.css", null, null);

if(!sss.sheetRegistered(uri, sss.AGENT_SHEET)) {
    sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
}

См. Также Использование службы стилей .

0 голосов
/ 26 ноября 2010

Вы можете прослушать еще одно событие:

document.addEventListener("DOMContentLoaded", AddIconsToURLs, false);
...