【问题标题】:AngularJS is undefined in IE8AngularJS 在 IE8 中未定义
【发布时间】:2016-05-02 20:42:42
【问题描述】:

我正在开发一个使用 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 undefinedIE really sucks, cant you just tell them to download chrome?

在与它斗争了一段时间后,我决定记录typeof angular,控制台返回undefined

在 IE9、IE10 和所有性能不佳的浏览器中一切正常。

请帮忙!

编辑

在到达我的第一个控制器之前,角度似乎是 undefined,所以我认为它与 ieshim 无关......

【问题讨论】:

标签: javascript internet-explorer internet-explorer-8 angularjs


【解决方案1】:

我已经使用 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>

【讨论】:

  • 谢谢!我在这里看到一些我缺少的东西,我会盲目地添加它们以希望取得进步!
  • 是的,它有效。但不要忘记,旧浏览器只支持旧版本的 Angular。我用 1.2.4 和 IE8 =)
  • 我想指出,我从来没有习惯于发明标签来与 angular 一起使用。它是非语义和非标准的。当 Angular 提供了通过数据属性实现它的方法时,你为什么要考虑走这条路?在我看来,使用你自己的(和原生的)自定义标签类似于使用 flash。
  • @dudewad- 同意。我上面发帖的目的是为了基本的调试和健全性检查
  • @Saike 谢谢...您的评论救了我...花了几个多小时才找到角中损坏的地方。最终通过版本更改修复。
【解决方案2】:

所以这完全是我的错(或者几个月前开始这个应用程序的人)。

我的应用控制器顶部有var angular = angular || {},IE8 不同意这个声明。

删除后一切正常。

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题,我的 IE9 浏览器无法识别任何 AngularJs 标签,在尝试了一切之后,我决定在服务器上运行 html 文件并且它工作正常。

    总结一下,当我如下执行文件时它不起作用

    file:///C:/AngularJS/firstTest.html

    当我按如下方式在服务器中执行文件时,它确实起作用了

    http://localhost:7001/AngularJS/firstTest.html

    【讨论】:

    • 我知道如果你想使用一些模块(比如 ngResource)你必须有一个活跃的服务器。
    【解决方案4】:

    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"。

    包含之后,您将克服以下错误。

    1. 预期对象
    2. 对象不支持属性或方法“模块”`##

    【讨论】:

      猜你喜欢
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多