【问题标题】:How to fix IE9 throwing SCRIPT1028 error, using AngularJS?如何使用 AngularJS 修复 IE9 引发 SCRIPT1028 错误?
【发布时间】:2012-11-13 20:02:41
【问题描述】:

我在我的单页应用程序中使用AngularJS。我在某处定义了这样的按钮

<button class="btn btn-success" onclick="doSeekTo({{todo.position}});doPlay();">

单击此按钮时,将调用带有双花括号中给定参数的 javascript 函数,与 AngularJS 一样。

这一切在 IE9 中运行良好,但在查看错误控制台时,它在我的花括号位置显示“预期的标识符、字符串或数字”。

如何摆脱这个错误?这让我感到不舒服。

【问题讨论】:

  • 您是使用ng-app 加载Angular,还是通过bootstrap 调用?
  • @rxgx 我使用 ng-app。你可以看看自己:quir.li/player.html 不过,我已经根据 Max 的回答改变了我现在做的方式。

标签: javascript console internet-explorer-9 angularjs


【解决方案1】:

在 Angular 中,您不应该使用内置的 onclick 事件,而应该使用 Angular 的 ng-click 事件。这样你就可以写了

ng-click="doSeekTo(todo.position);doPlay()"

【讨论】:

  • 这听起来很合理,但是完全按照您的建议尝试时,它不起作用。没有采取任何行动。我会根据你的提示进行调查。
  • 不幸的是我没有把它带到工作中。我不得不说按钮不是提交按钮。而且我也不是 AngularJS 专家……
  • 最后,我成功了。 doSeekTo() 只是一个普通的全局函数。我没有在 $scope 上定义它,现在它按预期工作。谢谢@Max。
  • 在 Angular 中,没有什么是全局的。一切都应该在 Angular 世界中的控制器、指令、服务等中,以便 Angular 可以让它们很好地协同工作。如果你要使用 Angular,你必须一直使用它。
【解决方案2】:

IE9 在你的 angularjs 代码修改它之前解析 HTML。也许像这样的一些间接性会有所帮助......

<button class="btn btn-success" paramvalue="{{todo.position}}" onclick="doSeekTo(this.paramvalue);doPlay();">

【讨论】:

  • 好主意。如果我不带@Max 的小费飞,我会求助于这个。
  • 这似乎部分工作,doSeekTo 函数被调用,但是函数内部接收的参数是未定义的。
  • @Marcel - 如果“this.paramvalue”不起作用,请尝试“this.getAttribute('paramvalue')”
【解决方案3】:

另一种选择是将 {{}} 括在单引号中,以便 IE 将其解释为字符串:

<button class="btn btn-success"> onclick="doSeekTo('{{todo.position}}');doPlay();">

【讨论】:

    猜你喜欢
    • 2021-08-16
    • 2020-11-08
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2017-04-05
    • 2014-01-06
    • 2020-09-11
    • 2017-06-30
    相关资源
    最近更新 更多