Динамически добавить таблицу стилей ссылок в ‹head›

Как добавить ссылку на таблицу стилей в заголовок документа?

Я нашел этот код, но он не работает со всеми браузерами, он вылетает из моего IE7:

var ss = document.createElement("link");
ss.type = "text/css";
ss.rel = "stylesheet";
ss.href = "style.css";
document.getElementsByTagName("head")[0].appendChild(ss);

Спасибо


person belaz    schedule 04.02.2009    source источник
comment
хм, я использовал этот метод раньше, и в IE7 все шло хорошо   -  person I.devries    schedule 04.02.2009
comment
Ваш код работает в IE6 и IE7 для меня. Может ли быть проблема в какой-то другой части страницы?   -  person Dan Lew    schedule 04.02.2009
comment
Хорошо, позже я трижды проверю у своих коллег, спасибо за беспокойство.   -  person belaz    schedule 04.02.2009
comment
Том и другие, я думаю, что другие сценарии могут мешать, но нет ни предупреждения, ни сообщения об ошибке. Что мне делать, если это так? Удалить эту проблему?   -  person belaz    schedule 05.02.2009
comment
Этот метод отлично работал у меня в Firefox, IE 6, 7 и 8.   -  person Michael Butler    schedule 06.12.2010
comment
Попробуйте: document.body.getElementsByTagName("head")[0].appendChild(ss);   -  person Jack    schedule 18.02.2014


Ответы (3)


Internet Explorer будет поддерживать innerHTML, хотя он добавляет перекомпоновку, это будет работать:

var headHTML = document.getElementsByTagName('head')[0].innerHTML;
headHTML    += '<link type="text/css" rel="stylesheet" href="style.css">';
document.getElementsByTagName('head')[0].innerHTML = headHTML;
person Alagu    schedule 04.02.2009
comment
Интересно, ваш код работает только на firefox. - person belaz; 05.02.2009
comment
Я не проверял это, вы хотите сказать, что это не работает в Internet Explorer? - person Alagu; 05.02.2009
comment
Ах. Это плохо, я не должен был получить голос за свой ответ. - person Alagu; 05.02.2009
comment
Это работает для Firefox, это все еще хороший ответ. - person belaz; 07.02.2009
comment
У меня нет доказательств моей теории, но я не думаю, что изменение innerHTML элемента HEAD документа — хорошая идея. - person Michael Butler; 06.12.2010

В IE вы могли бы попробовать метод createStyleSheet? Это принимает URL в качестве параметра. Я не знаю, есть ли эквивалент в FF/chrome.

-- Сентил

person Community    schedule 04.02.2009

Это была простая ошибка JavaScript с перекрестными ссылками. Хорошего дня.

person belaz    schedule 05.02.2009