10

Intl not available当我的脚本在 Edge 15 中运行以下代码时,我在 JS 控制台中看到错误:

new Date().toLocaleDateString()

我对此有点难过。它在 Edge 14 中运行良好,我找不到任何对从 Edge 15 突然消失的国际化 API 的引用。

我不确定这是否是测试它的正确方法,但window.hasOwnProperty("Intl")在控制台中运行实际上会返回true. 对我来说,这似乎表明 Intl 确实存在

任何拥有更多 JS 技能的人都能够知道这里到底发生了什么?

4

3 回答 3

3

确保您的 JS 代码没有重新定义标准Map类。

我们遇到了几乎相同的问题,但使用了Intl.Collator对象。因此我们无法使用String.prototype.localeCompare("...", "locale")

您可以在 Edge 15 和其他浏览器中查看此 codepen 以获得解释:https ://codepen.io/kgorob/pen/pweaWV 。

PS我不确定你的问题是因为Map具体的类,也许是你正在重新定义的其他一些标准的JS类。

于 2017-06-19T18:36:16.273 回答
1

问题是由于Chakracore 代码中的这些行Intl.js是用于在内部执行各种国际化特定操作的 javascript 文件。由于Map使用了,在Intl.js代码执行之前覆盖它(它是延迟执行的),会导致问题。这应该很快得到解决。

于 2017-06-20T19:28:42.063 回答
0

正如 ksp 的回答所说,这是由 Map 被覆盖后的 Intl 延迟加载引起的。因此,最简单的解决方法是在其他脚本运行之前强制它提前初始化:

<html>
  <head>
  <script>Intl.DateTimeFormat</script>
  ...

这是 Chakra repo 中的问题:https ://github.com/Microsoft/ChakraCore/issues/3189

于 2017-06-19T06:41:05.680 回答