Javascript IE8中未定义AngularJS
我正在开发一个使用AngularJs的大型应用程序 当我在IE8中查看页面时,我会看到超级漂亮的控制台错误,如Javascript IE8中未定义AngularJS,javascript,internet-explorer,internet-explorer-8,angularjs,Javascript,Internet Explorer,Internet Explorer 8,Angularjs,我正在开发一个使用AngularJs的大型应用程序 当我在IE8中查看页面时,我会看到超级漂亮的控制台错误,如对象不支持属性或方法“模块”,对象不支持属性或方法“小部件”,无法获取属性“控制器”的值:对象为null或未定义的,以及IE真的很糟糕,你不能告诉他们下载chrome吗? 在与它斗争了一段时间后,我决定记录angular的类型,控制台将未定义返回到该类型 在IE9、IE10和所有不那么糟糕的浏览器中,一切都如预期的那样工作 请帮忙 编辑: 在到达我的第一个控制器之前,angular似乎是
对象不支持属性或方法“模块”
,对象不支持属性或方法“小部件”
,无法获取属性“控制器”的值:对象为null或未定义的,以及IE真的很糟糕,你不能告诉他们下载chrome吗?
在与它斗争了一段时间后,我决定记录angular的类型
,控制台将未定义
返回到该类型
在IE9、IE10和所有不那么糟糕的浏览器中,一切都如预期的那样工作
请帮忙
编辑:
在到达我的第一个控制器之前,angular似乎是未定义的,所以我认为这与IESHEM无关。我已经与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>
提示详细视图
var pageModule=angular.module('pageModule',[])
.controller('pageCtrl',函数($scope){
$scope.foo='my foo';
});
{{foo}}
所以这完全是我的错(或者是几个月前启动这个应用程序的家伙)
我的应用程序控制器顶部有var angular=angular | |{}
,IE8不同意这个声明
删除后一切正常。我也遇到了同样的问题,我的IE9浏览器没有识别任何AngularJs标记,在尝试了所有操作后,我决定在服务器上运行html文件,结果成功了
简而言之,当我执行以下文件时,它不起作用
file:///C:/AngularJS/firstTest.html
当我在服务器中按如下方式执行文件时,它确实起了作用
var versionError=angular.module('versionError',[])
.controller('versionCtrl',函数($scope){
$scope.name='Shantha Moorthy K';
});代码>
具有较低版本错误的AngularJS
{{name}}
超级漂亮?从未想过这样描述它……:)你结束了吗?jbabey:是的,我也实现了angular ui ieshiv.js,因为遵循该指南无法解决我的问题。你检查了文档模式了吗?看,谢谢!我在这里看到了一些我遗漏的东西,我会盲目地添加它们以期进步!是的,它起作用了。但别忘了,旧浏览器只支持Angular的旧版本。我使用1.2.4和IE8=)我想指出的是,为了使用angular,我从来都不喜欢发明标签。它是非语义和非标准的。当角度提供数据属性的方式时,为什么你会考虑走那个路线?在我看来,使用您自己的(和有角度的本地)自定义标记类似于使用flash。@dudewad-同意。我上面的帖子是为了基本的调试和理智check@Saike谢谢你的评论救了我。。。花了两个多小时才找到这个破碎的地方。我知道如果你想使用一些模块(比如ngResource),你必须有一个活动服务器。