【问题标题】:IE11: TypeError: Intl is not availableIE11:TypeError:Intl 不可用
【发布时间】:2019-04-02 05:48:15
【问题描述】:

我有一个适用于所有浏览器(包括 IE11)的 Angular 应用程序。 但是,在某些情况下(仍然不确定为什么),IE 会抛出 TypeError,这是由 Angular CDK 平台 umd javascript 引起的:

var hasV8BreakIterator = (typeof Intl !== 'undefined' && ((/** @type {?} */ (Intl))).v8BreakIterator);

缩小为:

o="undefined"!=typeof Intl&&Intl.v8BreakIterator

错误是:

TypeError: Intl 不可用

我的问题是,总的来说,“TypeError: xxx is not available”是什么意思,更具体地说,如果有任何原因会出现这种情况。

【问题讨论】:

  • 有这个Q/A 但我不得不承认我不相信那里的答案。否则,此错误消息听起来像是无法加载浏览器所需的资源,可能是因为某些用户设置?
  • 我也遇到类似的错误,找到解决方法了吗?
  • 查看响应中的解决方法 - 这是 Angular 特有的。否则,只需用 try 将导致错误的行换行并捕获错误。

标签: javascript


【解决方案1】:

确认这是由于在 Windows 上安装 KB4489881 更新引起的。 本次更新增加了一些逻辑代码sn -p 判断机器是否为Win8。

如果是Win 8,IE会避免加载Windows.Globalization.dll,继续加载jsIntl.dll。

这适用于 IE11 和带有清单文件的 Weboc,该文件用于将应用程序定位到 Windows 8.1 或 Windows 10。 ​但是,如果 weboc 没有指定的 manifest 文件,那么即使在 Windows 8.1 或 Windows 10 上运行,版本检测也会返回为 Windows 8 版本(6.2.0.0)。

以下文章阐明了您需要做什么的问题:

针对 Windows 的应用程序 https://docs.microsoft.com/en-us/windows/desktop/SysInfo/targeting-your-application-at-windows-8-1

另外,一个解决方法是角度包的问题:https://github.com/angular/material2/pull/15693

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2017-11-15
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多