使用text方法向样式元素添加css规则在IE中不起作用

pow*_*boy 25 jquery internet-explorer

它在Firefox和Chrome中运行良好,但在IE8中不起作用.这是html结构:

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script type="text/javascript">
   $(function() {
    // this does not work in IE
    $('<style type="text/css"></style>').text('body {margin: 0;}').appendTo('head');
   });
  </script>
 </head>
 <body>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在IE中这样做的替代方法是什么?

Ken*_*ing 52

这在IE7中对我有用:

$('<style type="text/css">body {margin: 0;}</style>').appendTo($('head'));
Run Code Online (Sandbox Code Playgroud)

另一种可能更容易阅读的语法:

$('head').append('<style type="text/css">body {margin:0;}</style>');
Run Code Online (Sandbox Code Playgroud)

但是,调用.text(val).html(val)设置style标记的内容将导致抛出异常,因为它们设置了innerHTML只读的DOM属性.

这是IE浏览器的文档中的innerHTML属性:

该属性是读/写的除以下所有对象,它是只读的:COL,COLGROUP,FRAMESET,HEAD,HTML,STYLE,TABLE,TBODY,TFOOT,THEAD,TITLE,TR.

  • 你可以选择漂亮或工作.由你决定.IE似乎认为`innerHTML`对于`style`元素应该是只读的. (6认同)

Jam*_*ate 5

我个人会这样做.

var styles = {
  margin: '0',
  padding: '5px',
  border: 'solid 0px black'
}

$('body').css(styles);
Run Code Online (Sandbox Code Playgroud)