2015-10-30 45 views
1

我有利用TrustPilot但一个相同的JSON提要2个plunks使用1.2.0,另一种是目前使用1.0.3IE边缘角1.0.3 VS 1.2.0不显示结果JSON饲料

我项目使用的是Angular 1.2.0,该Feed可以在除IE 11之外的所有浏览器上运行(有趣的是,它可以在IE10及更低版本上运行)。当IE 11被使用时没有任何填充,我也没有得到任何错误消息。

但是,当我将Angular切换到1.0.3时,它在IE 11及更低版本上工作。

我很想知道为什么发生这种情况,我可以使用1.2.0和我目前的逻辑在IE 11中工作。

Plnkr using 1.2.0 - (在IE11不工作)

Plnkr using 1.0.3 - (确实在IE11的工作,这里是一个link的代码来自哪里最初)

注:请不要回答说我应该使用

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10">. 

回答

1

它不能在IE11中使用AngularJS 1.2.0的原因是由于一个错误。

它被固定在AngularJS 1.2.2

您可以通过访问链接阅读在changelog更多关于它旁边的以下部分:

$ httpBackend:只有IE8及以下不能使用script.onload为JSONP

基本上在IE11中,内部API已更改,不再使用onreadystatechange事件,就像以前的IE版本一样。

它与AngularJS 1.0.3和IE11一起工作的原因只是一个幸运的副作用。

AngularJS 1.0.3中的浏览器嗅探器无法正确检测IE版本,可能是因为IE11在开发Angular版本时尚未发布。

这导致在下面的代码(从1.0.3)else块将被执行,而不是msie一个:

if (msie) { 
script.onreadystatechange = function() { 
    if (/loaded|complete/.test(script.readyState)) doneWrapper(); 
}; 
} else { 
script.onload = script.onerror = doneWrapper; 
} 

而且,由于在IE11使用onreadystatechangeonload取代 - 它会工作。

最简单的解决方案是将AngularJS从1.2.0升级到1.2.2

+0

谢谢@tasseKATT – user1431083

+0

不客气:) – tasseKATT