如何使用jQuery在IE中附加样式表?

Jac*_*lly 13 html javascript css jquery internet-explorer

大家好,

我只是想创建一个插件,我需要它是用户友好的所以我想在我的插件加载时用户页面部分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>
Run Code Online (Sandbox Code Playgroud)

这是我的CSS代码-----

body {
 background:#ddd; 
}
h1 {
 color: #789; 
}
Run Code Online (Sandbox Code Playgroud)

所以有人能告诉我哪里出错或这是一生的问题吗?

提前致谢


在看到第一条评论并转到提供的链接之后,我刚刚创建了这个示例代码并发现了一些惊人的东西!看到这个~~~

<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>
Run Code Online (Sandbox Code Playgroud)

在使用我的IE8浏览器执行此页面时,我收到消息

This doesn't supports head appending!
Run Code Online (Sandbox Code Playgroud)

好吧,我的浏览器没有问题,或者这是IE8的错误?


Chr*_*tow 27

if (document.createStyleSheet)
{
    document.createStyleSheet("style.css");
}
else
{
    $("head")
       .append('<link rel="stylesheet" type="text/css" href="style.css" />'); 
}
Run Code Online (Sandbox Code Playgroud)

  • 在尝试添加包含IE <9中的链接标记的HTML时,这似乎应该是jquery的一部分. (5认同)
  • IE9**中的IE8兼容模式确实**让你在头部插入一个链接,但真正的IE8没有.这么多'兼容性'!我同意,这应该是jquery. (2认同)

Yah*_*hel 5

document.head用来访问头部.document.head 作为HTML5的一部分,它只是DOM的最新成员.所以,它并没有得到普遍的支持.

如果你想使用它,你应该在调用它之前添加一个垫片:

document.head = document.head || document.getElementsByTagName('head')[0];
Run Code Online (Sandbox Code Playgroud)

否则,您可以直接附加到<head>标记(建议使用,因为这是使用jQuery的语法糖的一半):

$("head").append(...);
Run Code Online (Sandbox Code Playgroud)