【发布时间】:2014-03-26 18:11:53
【问题描述】:
我有一个 Angular 应用程序,除了在 IE8 中运行良好。本质上,外部样式表中的样式不会对在我的视图中呈现的代码生效。我遵循了 Angular IE 指南。这是我的 html 元素上的代码:
<!--[if IE 8]>
<html class="no-js lt-ie9" xmlns:ng='http://angularjs.org' id='ng-app' ng-app='HPApp' ng-controller='HPMainController' ng-init='loadHP()'>
<![endif]-->
稍后我会渲染一个特定于 IE 的样式表,否则我会使用数据绑定来渲染一个特定于 URL 的样式表
<!--[if IE 8]>
<link rel="stylesheet" href="css/ie.css">
<![endif]-->
<!--[if gt IE 8]><!-->
<link rel="stylesheet" ng-href="css/{{cssPath}}">
<!--<![endif]-->
稍后在我的 html 正文中,我有一个带有 ng-view 属性的 div
<div ng-view></div>
如果我在模板中删除带有 ng-view 和硬编码的 div,我的样式就会生效。否则,我的样式似乎会在模板呈现之前应用于页面。
另外,请注意,如果我在我的 IE 特定样式表上使用 ng-href 属性,IE 根本不会加载它。
【问题讨论】:
-
在让 IE8 和 AngularJS 运行良好方面做了一些工作,我至少可以建议 IE8 对格式不正确的 HTML 更有气质,尤其是在与嵌套模板(如 ng-view)结合使用时或其他方法。我遇到过一些非常奇怪的事情仅在 IE8 中不起作用的情况,只是为了最终弄清楚这是因为我犯了一个 html 错误(未关闭的标签、自关闭一个不允许自关闭的标签等)跨度>
-
我不得不对所有模板和 IE8 使用 $.trim
-
@Rich 您是否尝试过 ng-view onload 属性?你认为在模板渲染后可以以某种方式重新加载我的 CSS 吗?
-
对不起,我没有,由于特定要求,我的模板有点不同。尽管我所说的更多的是,如果这种情况与我的问题相似,则不需要重新加载 CSS,而是某些格式错误的 HTML 会阻止正确应用已加载的 CSS。搜索还会显示此 stackoverflow.com/questions/20556102/… 。这提醒我我必须在 IE8 中包含 html5shiv 以支持 HTML5 标签。
标签: javascript css angularjs ng-view ngroute