AngularJS v1.4.4'期望标识符' IE10上的错误

时间:2015-08-26 18:01:54

标签: javascript angularjs visual-studio-2013 asp.net-mvc-5 internet-explorer-10

我在VS2013中使用Angular JS项目(角度版本v1.4.4)创建MVC5。我正在编码,一切都很好,然后突然我开始在启动时收到此错误:

  

{53}中第39行第39行的JavaScript严重错误\ n \ nSCRIPT1010:预期标识符

我只在IE10上收到此错误,它在Chrome上运行良好。

我的引用位于布局文件中,如下所示:

<link href="~/Content/bootstrap.css" rel="stylesheet" />
<link href="~/Content/Site.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/angular.js"></script> 
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/angular-route.js"></script>

HTML页面包含对App.js文件的引用。我可以发布一些代码,但它似乎甚至没有打到App.JS文件。有人遇到过这个问题,或者对于我应该从哪里开始寻找问题有任何建议?据我所知,我将我的代码恢复到IE10工作的程度,但它仍然无法运行。

这是angular.js文件中包含错误行号的特定函数。具体的行是在&#39; catch&#39;中的返回声明。功能:

getPromise: function() {
  if (!this.defer) {
    this.defer = $q.defer();
  }
  return this.defer.promise;
},
then: function(f1,f2) {
  return this.getPromise().then(f1,f2);
},
'catch': function(f1) {
  return this.getPromise().catch(f1);
},
'finally': function(f1) {
  return this.getPromise().finally(f1);
}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

根据changelog,最近在v1.4.4中专门介绍了这一点:

  

$ animateCss :确保skipBlocking避免先发制人的转换延迟样式

更多地扩展一些上下文引发错误的行:

var $CoreAnimateCssProvider = function() {
  this.$get = ['$$rAF', '$q', function($$rAF, $q) {

    var RAFPromise = function() {};
    RAFPromise.prototype = {
      done: function(cancel) {
        this.defer && this.defer[cancel === true ? 'reject' : 'resolve']();
      },
      end: function() {
        this.done();
      },
      cancel: function() {
        this.done(true);
      },
      getPromise: function() {
        if (!this.defer) {
          this.defer = $q.defer();
        }
        return this.defer.promise;
      },
      then: function(f1,f2) {
        return this.getPromise().then(f1,f2);
      },
      'catch': function(f1) {
        return this.getPromise().catch(f1);
      },
      'finally': function(f1) {
        return this.getPromise().finally(f1);
      }
    };
//... more code

$CoreAnimateCssProvider未包含在1.4.3中,因此它绝对是新的。

我的建议是,您现在尝试使用版本1.4.3,直到修复此错误。

答案 1 :(得分:0)

我在IE 11.0.9600中遇到了类似的问题。我试过1.4.3并且angular.min.js刚刚抛出一个新错误:

SCRIPT5007: Object expected 
File: angular.min.js, Line: 7, Column: 238.

还尝试了1.6.1,它在另一个&#34; .catch&#34;在js。

然而,这个错误也可能是由于文件类型被搞砸而IE试图以旧模式解析事物。要修复,请添加到您的web.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
        <add name="X-UA-Compatible" value="IE=10" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration> 

或者,在主布局页面中添加:

<meta http-equiv="X-UA-Compatible" content="IE=11" />

并检查你的doctype声明很简单:

<!doctype html>

另外,在IE浏览器中使用angularjs还有其他一些问题(即使是最新的浏览器),这些问题归结为使用:

  1. ng-style标签代替style =&#34; {{someCss}}&#34;
  2. ng-attr-type标签而不是type =&#34; {{someExpression}}&#34;按钮
  3. ng-attr-value标签代替值=&#34; {{someExpression}}&#34;
  4. ng-attr-placeholder标记而不是占位符=&#34; {{someExpression}}&#34;
  5. 请参阅IE compatibility with angular