我在IE11中的角度应用程序有一个非常奇怪的问题。这就是:
在一个3页(3个不同的路线)网站上,一个不在第一次加载(如果我按F5和/或我打开了web开发控制台,它就可以工作)。我调试的那个页面因为它加载了一半。它到达组件中代码的这一部分时会中断:
...
constructor(public http: Http) {
//... stuff
http.get('./data/data.json')
.map((res:Response) => res.json())
.subscribe(
data => {
alert ('test');
},
// err => console.error(err)//,
// () => console.log('done')
);
//... stuff
}
警报在第一次加载时不会显示,但是如果我重新加载或者控制台是打开的话。没有其他js错误出现,其他浏览器从开始就做得非常好。
我有什么:
我有角度版本2.0.0-rc.4并使用此垫片:https://unpkg.com/core-js/client/shim.min.js
到目前为止我已尝试过:
我尝试了很多不同的垫片,有些打破我的网络,没有做任何事情所以我回到了我最初的状态(我的网站基于英雄教程,从那里工作)。
我尝试过更改角度版本,但它打破了已完成的网站,我无法将所有代码升级到新版本。我现在无法破解网站来修复IE的一个问题。
我已将此添加到index.html:
<meta http-equiv="x-ua-compatible" content="ie=edge">
没有变化。我也尝试用metas删除缓存,也没有更改。
我可能还缺少什么?
答案 0 :(得分:0)
几天前,我遇到了同样的问题。这是IE的一个非常疯狂的错误。
在我的情况下,此问题的原因是IE在特定条件下无法识别html5的doctype html。 (不是所有时间,但有时)
<!doctype html>
当IE无法识别此doctype-html声明时,IE浏览器将进入怪癖模式,并尝试像处理90年代后期那样编写代码。这就是IE使用Internet Explorer 5模式的主要原因。
What happens when you remove doctype from the HTML page
可悲的是,IE 5模式存在严重问题,它无法正确使用ajax请求/响应。有时候,它可以打电话,但有时候,它不能打电话。
jquery-ajax-post-parameters-sometimes-not-sent-on-ie how-to-detect-server-or-networking-failures-when-using-xmlhttp
因此,此问题的解决方案是使用html4的严格声明而不是使用html5声明来防止IE进入怪癖模式。 IE 11无法完美支持Html5。您可以使用html5搜索并找到很多IE 11的问题案例。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">