【问题标题】:EcmaScript error in Safari and IESafari 和 IE 中的 EcmaScript 错误
【发布时间】:2016-12-15 11:24:05
【问题描述】:

我开发了一个 AngularJs 应用程序。此应用程序在 Google ChromeMozilla Firefox 中运行良好,但当我在 SafariIE-11 中测试此应用程序时强>。它在控制台中显示错误。

就像我在很多地方使用这段代码来打开引导模式

$modal.open({
    templateUrl: "dummyTemplate.html",
    controller: "DummyControllerName",
    controllerAs: "vm",
    windowClass: 'popupModal',
    size: 'sm',
    resolve: {
        dummyData: function(){ return object; }
    }
}).result.then(data => { 

});

另一个代码sn-ps

$rootScope.$on("toastIt", (e, d) => { // <- It show error on this line in IE and Safari
    toaster.pop(d.type || 'success', d.title, d.text);
});

我知道这个问题的原因仅仅是因为 EcmaScript 支持。 Internet Explorer 和 Firefox 不支持此功能。

任何人都可以建议我解决此问题的最佳方法,并在 Safari 和 IE 中启用对我的 AngularJs 应用程序的支持。

如果我选择修改代码格式的选项,那么有很多地方,这将花费太多时间。有没有其他更好的解决方法?

【问题讨论】:

  • 确切的错误是什么?
  • “控制台显示错误。” 什么错误?
  • 我用错误截图@T.J.Crowder 更新了问题
  • @str 这个网站告诉我有关支持的信息。但在这里我要求解决方案。而不是更改整个项目代码。最好的解决方案是什么?

标签: javascript angularjs internet-explorer safari ecmascript-6


【解决方案1】:

听起来您是在说您收到错误是因为您在 IE11 中使用了箭头函数。事实上,IE11 不支持箭头功能或 ES2015 及更高版本的各种其他部分。 (过去几个月的任何版本的 Firefox都可以。)

解决方案是使用 transpiler(例如 Babel)将您的 ES2015+ 代码transpile 转换为 ES5 代码。您在构建步骤中执行此操作,并部署转译后的 ES5 兼容代码。

当然,也可以只使用目标浏览器支持的功能(例如,如果目标是 IE11,则不要使用箭头功能)。

【讨论】:

    【解决方案2】:

    您的 resolve 行缺少结束 } - 您有这个(删除了不相关的内容):

    $modal.open({
      ...
      resolve: {
        smudgedOut: function(){ return response.data
      }
    })
    

    应该是:

    $modal.open({
      ...
      resolve: {
        smudgedOut: function() { return response.data; }
      }
    })
    

    至少,从您在 chrome 开发工具中向我们展示的内容来看,这就是问题所在。

    【讨论】:

    • 它没有丢失 }。它的裁剪图像。我已经发布了完整的代码,我只是发布了图像以显示错误消息。
    • @UFFAN:这是一些有趣的裁剪。 :-) 建议删除它并将错误文本包含为文本。
    • 我已经更新了错误截图。希望现在不会有任何混乱
    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 2017-12-24
    • 2019-04-24
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多