Как добавить таблицы стилей в IE, используя jQuery? - PullRequest
13 голосов
/ 21 мая 2011

Здравствуйте, ребята,

Я просто пытался создать плагин, и мне нужно, чтобы он был удобным для пользователя, поэтому я хочу append тег <link/> наhead часть страницы пользователей, поскольку мой плагин загружен.Он отлично работает со всеми другими браузерами (не уверен в IE9, IE7 и IE6), но не работает для IE8!Я не понимаю, что не так с моим плагином, поэтому я просто создал образец страницы и столкнулся с подобной проблемой!Вот моя тестовая страница HTML + jQuery Code ------

<html>
       <head>
              <script src="../jquery-1.6.min.js"></script>
              <script>
                       $(document).ready(function () {
                          $(document.head).append('<link rel="stylesheet" type="text/css" href="style.css" />');
                       });
              </script>
       </head>
       <body>
              <h1>Text!</h1>
       </body>
</html>

А вот мой CSS-код -----

body {
 background:#ddd; 
}
h1 {
 color: #789; 
}

Так что кто-нибудь может сказать мне, гдеЯ ошибаюсь или это проблема жизни?

СПАСИБО ЗА ПРЕДЕЛА


Увидев первый комментарий и перейдя по предоставленной ссылке, я простосоздал этот пример кода и нашел что-то удивительное!Посмотрите это ~~~

<html>
       <head>
              <script src="../jquery-1.6.min.js"></script>
              <script>
                       $(document).ready(function () {
                          if (document.getElementsByTagName('head')[0] === document.head) {
                           $("head").append('<link rel="stylesheet" type="text/css" href="style.css" />');
                          }else {
                           alert('This doesn\'t supports head appending!');
                          }
                       });
              </script>
       </head>
       <body>
              <h1>Text!</h1>
       </body>
</html>

При выполнении этой страницы с моим браузером IE8 я получаю сообщение, что

This doesn't supports head appending!

Ну, я не понимаю, что не так с моим браузером или этовина IE8?


Ответы [ 2 ]

27 голосов
/ 21 мая 2011
if (document.createStyleSheet)
{
    document.createStyleSheet("style.css");
}
else
{
    $("head")
       .append('<link rel="stylesheet" type="text/css" href="style.css" />'); 
}
5 голосов
/ 21 мая 2011

Вы используете document.head для доступа к голове.document.head является лишь недавним дополнением к DOM, как часть HTML5.Таким образом, он не поддерживается повсеместно.

Если вы хотите его использовать, вы должны добавить шим перед его вызовом:

document.head = document.head || document.getElementsByTagName('head')[0];

В противном случае вы можете просто добавитьнепосредственно к тегу <head> (что рекомендуется, так как это половина смысла использования синтаксического сахара jQuery):

$("head").append(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...