Angular 2 - IE 11关于http get请求的问题

Angular 2 - IE 11 issue with http get request

本文关键字:get 请求 问题 http 关于 IE Angular      更新时间:2023-09-26

我在IE11中使用angular应用程序时遇到了一个非常奇怪的问题。结果如下:

在一个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错误显示,其他浏览器从一开始就做得很好。

What I have:

我有angular版本2.0.0-rc。4和我使用这个垫片:https://unpkg.com/core-js/client/shim.min.js

我已经试过了:

我尝试了很多不同的垫片,有些破坏了我的网页,没有做任何事情,所以我回到了我最初的网页(我的网页是基于英雄教程,从那里工作)。

我试过改变angular版本,但它破坏了网站,我不能把我所有的代码升级到一个新版本。我现在不能为了解决IE的一个问题而关闭网站。

我已经把这个添加到index.html:

<meta http-equiv="x-ua-compatible" content="ie=edge">

没有变化。我也试过用元数据删除缓存,也没有改变。

还有什么我可能遗漏的吗?

几天前,我遇到了同样的问题。这是IE的一个非常疯狂的bug。

在我的案例中,这个问题的原因是IE不能识别特定条件下的html5的doctype html。(不是所有时间,但有时)

<!doctype html>

当IE不能识别这个doctype-html声明时,IE浏览器进入怪癖模式,并试图处理代码,就好像它是在90年代后期编写的一样。这就是为什么IE使用ie5模式的主要原因。

从HTML页面中删除doctype会发生什么?

,遗憾的是,IE 5模式有一个严重的问题,它不能正确使用ajax请求/响应。有时,它可以调用,但有时,它不能调用。

jquery-ajax-post-parameters-sometimes-not-sent-on-iehow-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">

文档类型定义