Angular JS 不适用于 IE9,但适用于其他浏览器
Posted
技术标签:
【中文标题】Angular JS 不适用于 IE9,但适用于其他浏览器【英文标题】:Angular JS not working with IE9 but works with other browsers 【发布时间】:2014-12-21 11:03:46 【问题描述】:所以我正在开发一个小应用程序,它可以从这样的 API url 获取它...... $http.get(s_url) .then(函数(res) ... 我的应用程序适用于 chrome、safari、opera 和 firefox,但在 IE9 中显示空白屏幕 我的 html 或 js 文件中是否缺少某些内容? 这是我在 IE 的 html 文件中的内容...
<!--[if lte IE 8]>
<script src="js/json2.js"></script>
<script>
document.createElement('ng-include');
document.createElement('ng-pluralize');
document.createElement('ng-view');
document.createElement('x-restrict');
document.createElement('x-fileupload');
// Optionally these for CSS
document.createElement('ng:include');
document.createElement('ng:pluralize');
document.createElement('ng:view');
//customized tags
document.createElement('location');
document.createElement('temp');
document.createElement('image');
document.createElement('caption');
document.createElement('temps');
document.createElement('remtemps');
</script>
<![endif]-->
<div ng-view></div>
</head>
【问题讨论】:
这只处理 IE 8 之前的版本? 我只需要它来处理IE9及更高版本 让我重申一下:您的 sn-p 中的所有代码都没有在 IE9 中运行。这是故意的吗? 啊,是的,我们有它:if lt IE 9
匹配“小于 IE 9”的版本 - 也就是说,它与 if lte IE 8
匹配相同的东西。如果你想在 IE 9 中运行第一个块,它应该只是 if IE 9
。
【参考方案1】:
我遇到了类似的问题。页面将正确加载,调用 angular 来填充表格。随后单击刷新按钮应调用获取方法,但被浏览器忽略。
解决方案是添加过去 5 秒过期的内容过期标头,然后 IE 将执行 Angular 脚本。
编辑:
如何实现
要添加的标头在HTTP specification 中指定。
我在这里打印了一个固定的时间戳。您当然可以使用日期/时间函数明确设置日期
根据您使用的语言以及托管您的网络服务器,有不同的方法可以做到这一点:
.htaccess 文件:
<filesMatch "\.json">
Header set Cache-Control "max-age=0, public"
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
</filesMatch>
-注意两者都不是必需的
如果你使用的是 php:
<? header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");
header("Cache-Control: max-age=0, public");
?>
如果你使用的是jsp:
<%
response.setHeader("Cache-Control: max-age=0, public");
%>
【讨论】:
能否请您提供在过去 5 秒内添加的内容过期标头的具体方式? 我已经用示例代码编辑了我的答案。希望对您有所帮助 谢谢。虽然我使用的是 .NET。我找到了解决方案here。我为每个$http.get
调用添加了一个时间戳,就成功了。
很高兴听到您找到了解决方案
即使我在 IE
【参考方案2】:
尝试在 ng-app 和 ng-view 前加上 data-ng-app、data-ng-view 中的数据。
【讨论】:
谢谢。我将其添加到我的代码中。主要问题是 http.get 方法对 IE 有一些问题,所以我不得不使用 XMLHttpRequest()。以上是关于Angular JS 不适用于 IE9,但适用于其他浏览器的主要内容,如果未能解决你的问题,请参考以下文章
Class:hover 适用于 Firefox,但不适用于 Chrome 和 IE9
jQuery背景按钮动画适用于Chrome和IE8,但不适用于Firefox或IE9 [重复]
Node.js 应用程序适用于工头,但不适用于 heroku。 404 错误
mirage.js 不适用于 Angular 中的子 url 路径(仅适用于根路径)