是否加载了es5-shim.js,请检入javascript?那';它代表ie8

是否加载了es5-shim.js,请检入javascript?那';它代表ie8,javascript,angularjs,internet-explorer,internet-explorer-8,es5-shim,Javascript,Angularjs,Internet Explorer,Internet Explorer 8,Es5 Shim,有没有办法确定 https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js 从 是否已加载 对于AngularJS,您可以签入javascript: if(!window.angular){ //not loaded } 对于shim,正确的方法是什么 谢谢。您不应该检查是否存在垫片。使用填隙片背后的想法是希望使用某些方法,例如Object.keys。当这些方法本机不可用时,您的垫片会将它们添加到所讨论的全局中,而您的

有没有办法确定

https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js

是否已加载

对于AngularJS,您可以签入javascript:

if(!window.angular){
//not loaded
}
对于shim,正确的方法是什么


谢谢。

您不应该检查是否存在垫片。使用填隙片背后的想法是希望使用某些方法,例如
Object.keys
。当这些方法本机不可用时,您的垫片会将它们添加到所讨论的全局中,而您的代码不知道它们之间的区别


您能否详细说明为什么需要知道它已加载?

请按照以下问题的已接受答案的更新部分进行操作:

以下是他的解决方案(全部归功于):

函数加载脚本(路径,回调){
var done=false;
var scr=document.createElement('script');
scr.onload=手动加载;
scr.onreadystatechange=HandlerReadyStateChange;
scr.onerror=手柄错误;
scr.src=路径;
函数handleLoad(){
如果(!完成){
完成=正确;
回调(路径“ok”);
}
}
函数handleReadyStateChange(){
var状态;
如果(!完成){
状态=scr.readyState;
如果(状态=“完成”){
handleLoad();
}
}
}
函数handleError(){
如果(!完成){
完成=正确;
回调(路径,“错误”);
}
}
}
试试看



如果不起作用,请告诉我

如果(!Array.prototype.forEach){/*未加载*/}
?只需将
放在IE8上即可。如果由于某些原因没有从CDN加载IE8,那么它应该从本地加载。在这种情况下,您应该查看@ RaSoul的答案,或者考虑使用专用脚本加载程序,该脚本加载程序将自动为您处理回退。
<!--[if lt IE 9]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js"></script>
<script>String.prototype.trim || document.write('<script src="/js/es5-shim.js"><\/script>')</script>
<![endif]-->