【发布时间】:2013-09-30 21:39:34
【问题描述】:
我正在使用 JavaScript 向页面动态添加样式表:
document.getElementsByTagName('head')[0].innerHTML += '<link href="/assets/standards/global.css?body=1" media="screen" rel="stylesheet" type="text/css" /><link href="/assets/standards/header.css?body=1" media="screen" rel="stylesheet" type="text/css" /><link href="/assets/standards/footer.css?body=1" media="screen" rel="stylesheet" type="text/css" />';
在 Chrome 下,一切都以适当的样式呈现;在 IE8 和 IE9 下,一切都呈现 没有 样式。任何想法为什么?
(注意:在我的情况下,不能通过 document.createElement + head.appendChild 注入样式表,因此这不是解决方案。另外请注意:在这种情况下我也不能使用 jQuery。)
背景:我在 JavaScript 中添加样式表,因为当文档模式为
<!--[if gt IE 8]>
<%= javascript_tag do %>
if (document.documentMode < 9) {
// Browser Mode = IE9+, Document Mode = IE8-.
document.getElementsByTagName('head')[0].innerHTML += '<%= stylesheet_link_tag("ie8").gsub("\n", '').html_safe %>';
}
else {
// Browser Mode = IE9+, Document Mode = IE9+.
document.getElementsByTagName('head')[0].innerHTML += '<%= stylesheet_link_tag("core", "widgets").gsub("\n", '').html_safe %>';
}
<% end %>
<![endif]-->
【问题讨论】:
-
你可以使用 DOM 属性,但不能使用 DOM 方法?怎么会?
-
我无法使用 document.createElement,因为我的后端正在发送生成的
<link>标签标记。后端没有返回样式表 URL 数组(这很好,但这是约束)。 -
如果链接是在后端形成的-不能在后端添加到页面吗?您有什么理由需要在客户端执行此操作?
-
如果文档模式
标签: javascript html css internet-explorer