我有一个 Angular 应用程序,可以在所有浏览器上正常工作,包括 IE11。然而,在某些情况下(仍然不确定为什么),IE 会抛出 TypeError,这是由 Angular CDK 平台 umd javascript 引起的:
var hasV8BreakIterator = (typeof Intl !== 'undefined' && ((/** @type {?} */ (Intl))).v8BreakIterator);
Run Code Online (Sandbox Code Playgroud)
缩小为:
o="undefined"!=typeof Intl&&Intl.v8BreakIterator
Run Code Online (Sandbox Code Playgroud)
错误是:
类型错误:Intl 不可用
我的问题是,一般来说,“TypeError:xxx 不可用”是什么意思,更具体地说,是否有任何原因会出现这种情况。
经确认,这是由于在 Windows 上安装 KB4489881 更新引起的。\n该更新添加了一些逻辑代码片段来检查机器是否为 Win8。
\n如果是\xe2\x80\x99s Win 8,IE将避免加载Windows.Globalization.dll并继续加载jsIntl.dll。
\n这适用于 IE11 和带有清单文件的 Weboc,该清单文件用于将应用程序定位到 Windows 8.1 或 Windows 10。\n\xe2\x80\x8b但是,如果 weboc 没有指定的清单文件,则版本检测将返回为 Windows 8 版本 (6.2.0.0),即使在 Windows 8.1 或 Windows 10 上运行。
\n以下文章澄清了您需要做什么的问题:
\n将应用程序定位到 Windows\n https://learn.microsoft.com/en-us/windows/desktop/SysInfo/targeting-your-application-at-windows-8-1
\n此外,还向 Angular 包发布了解决方法:https://github.com/angular/material2/pull/15693
\n