JavaScript: получение события загрузки на ССЫЛКЕ

я пытаюсь присоединить обработчик событий к событию загрузки тега link, выполнить некоторый код после того, как таблица стилей загрузилась.

new_element = document.createElement('link');
new_element.type = 'text/css';
new_element.rel = 'stylesheet';
new_element.href = 'http://domain.tld/file.css';
new_element.addEventListener('load', function() { alert('foo'); }, false);
document.getElementsByTagName('head')[0].appendChild(new_element)

я попробовал onreadystatechange также

new_element.onreadystatechange = function() { alert('foo'); }

к сожалению, никакой подход не приводит к инициированному предупреждению.. Кроме того, new_element.onload является пустым после регистрации обработчика для события 'загрузки' с addEventListener.. это нормально?

спасибо, andrew

PS: я не могу использовать платформу в решении этого

15
задан pgn 14 April 2010 в 08:10
поделиться

3 ответа

Для таблиц стилей CSS (не элементов LINK в целом) я использую ручной интервал, тыкая на длину правил. Это работает кроссбраузерно (AFAIT).

try {
  if ( cssStylesheet.sheet && cssStylesheet.sheet.cssRules.length > 0 )
    cssLoaded = 1;
  else if ( cssStylesheet.styleSheet && cssStylesheet.styleSheet.cssText.length > 0 )
    cssLoaded = 1;
  else if ( cssStylesheet.innerHTML && cssStylesheet.innerHTML.length > 0 )
    cssLoaded = 1;
}
catch(ex){}

В приведенном выше коде cssStylesheet является DOMElement.

10
ответ дан 30 November 2019 в 23:53
поделиться

Даже если вы добавите встроенный:

<link rel="stylesheet" type="text/css" href="foo.css" onload="alert('xxx')"/>

Он не сработает в FireFox, поскольку не событие onload для элементов link . (Это будет работать в IE)

4
ответ дан 30 November 2019 в 23:53
поделиться

У href нет события загрузки, которое вам нужно для применения ваших материалов при загрузке самой страницы, например

window.onload = function(){
//code here

}

используйте функцию на этой странице: http://www.dustindiaz.com/top-ten-javascript/

, чтобы добавить событие в элемент body (в строке будет)

{{ 1}}
-4
ответ дан 30 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: