我正在开发一个使用AngularJs的大型应用程序。
当我在IE8中查看该页面时,我得到了超级漂亮的控制台错误,例如Object doesn't support property or method 'module'
,Object doesn't support property or method 'widget'
,unable to get value of the property 'controller': object is null or undefined
和IE really sucks, cant you just tell them to download chrome?
在与它斗争一段时间后,我决定记录控制台返回typeof angular
的{{1}}。
在IE9,IE10和所有不吸吮的浏览器中,一切都按预期工作。
请帮忙!
修改:
在它到达我的第一个控制器之前,它似乎是undefined
,所以我不认为它与ieshim有关...
答案 0 :(得分:5)
我已经和IE8合作了六个月了,感受到你的痛苦。
没有看到你的代码就很难说出错了什么
这是一个非常非常基本的页面,我刚刚用IE8进行测试,供您比较:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<meta charset="utf-8">
<title>Prompt Detail View</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<!-- disable browser cache -->
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
<!--[if lte IE 8]>
<script>
document.createElement('ng-include');
document.createElement('ng-pluralize');
document.createElement('ng-view');
// Optionally these for CSS
document.createElement('ng:include');
document.createElement('ng:pluralize');
document.createElement('ng:view');
</script>
<![endif]-->
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script src="js/jquery-1.7.2.min.js"></script>
<script src="js/angular-1.0.2.js" ng:autobind></script>
<script>
var pageModule = angular.module('pageModule',[])
.controller('pageCtrl',function($scope) {
$scope.foo = 'my foo';
});
</script>
</head>
<body>
<div ng-app="pageModule"
ng-controller="pageCtrl">
{{foo}}
</div>
</body>
</html>
答案 1 :(得分:2)
所以这完全是我的坏事(或几个月前开始使用此应用程序的人)。
我的应用程序控制器顶部有var angular = angular || {}
,IE8不同意此声明。
删除后一切都很好。
答案 2 :(得分:2)
我也有同样的问题,我的IE9浏览器没有识别任何AngularJs标签,在尝试了所有内容后我决定在服务器中运行html文件并且它有效。
总结一下,当我按如下方式执行文件时,它无法正常工作
文件:/// C:/AngularJS/firstTest.html
当我在服务器中按如下方式执行文件时,它确实有效
答案 3 :(得分:0)
var versionError = angular.module('versionErrors', [])
.controller('versionCtrl', function($scope) {
$scope.name = 'Shantha Moorthy K';
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta charset="utf-8">
<title>AngularJS with Lower version Error's</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div ng-app="versionErrors" ng-controller="versionCtrl">
{{name}}
</div>
</body>
</html>
`如果您使用的是AngularJS +低版IE(8),请包含content =“IE = edge”。
在包含之后,您将克服以下错误。