Angular 2 - 使用http get请求的IE 11问题

时间:2016-11-10 15:42:46

标签: javascript internet-explorer angular

我在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删除缓存,也没有更改。

我可能还缺少什么?

1 个答案:

答案 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">

Document Type Definition