"Intl not available" 在边缘 15
"Intl not available" in Edge 15
当我的脚本在 Edge 15 中运行以下代码时,我在 JS 控制台中看到 Intl not available
错误:
new Date().toLocaleDateString()
我对此有点困惑。它在 Edge 14 中工作得很好,我找不到任何关于国际化 API 突然从 Edge 15 消失的参考。
我不确定这是否是测试它的正确方法,但控制台中 运行 window.hasOwnProperty("Intl")
实际上 returns true
。对我来说,这似乎表明 Intl 实际上 是 。
任何具有更多 JS 技能的人都能够说出这里到底发生了什么?
正如ksp的回答所说,这是Map被覆盖后Intl延迟加载造成的。因此,最简单的解决方法是强制它在其他脚本 运行:
之前尽早初始化
<html>
<head>
<script>Intl.DateTimeFormat</script>
...
这是 Chakra 存储库中的问题:https://github.com/Microsoft/ChakraCore/issues/3189
确保您的 JS 代码没有重新定义标准 Map
class.
我们遇到了几乎相同的问题,但使用的是 Intl.Collator
对象。因此我们无法使用 String.prototype.localeCompare("...", "locale")
。
您可以在 Edge 15 和其他浏览器中查看此代码笔以获取解释:https://codepen.io/kgorob/pen/pweaWV。
P.S。
我不确定你的问题是因为 Map
class 具体来说,也许是你正在重新定义的其他一些标准 JS class。
问题是因为 these lines in Chakracore code。 Intl.js
是 javascript 内部用于执行各种国际化特定操作的文件。由于使用了 Map
,在 Intl.js
代码执行之前覆盖它(它被延迟执行),导致问题。这应该很快就会得到解决。
当我的脚本在 Edge 15 中运行以下代码时,我在 JS 控制台中看到 Intl not available
错误:
new Date().toLocaleDateString()
我对此有点困惑。它在 Edge 14 中工作得很好,我找不到任何关于国际化 API 突然从 Edge 15 消失的参考。
我不确定这是否是测试它的正确方法,但控制台中 运行 window.hasOwnProperty("Intl")
实际上 returns true
。对我来说,这似乎表明 Intl 实际上 是 。
任何具有更多 JS 技能的人都能够说出这里到底发生了什么?
正如ksp的回答所说,这是Map被覆盖后Intl延迟加载造成的。因此,最简单的解决方法是强制它在其他脚本 运行:
之前尽早初始化<html>
<head>
<script>Intl.DateTimeFormat</script>
...
这是 Chakra 存储库中的问题:https://github.com/Microsoft/ChakraCore/issues/3189
确保您的 JS 代码没有重新定义标准 Map
class.
我们遇到了几乎相同的问题,但使用的是 Intl.Collator
对象。因此我们无法使用 String.prototype.localeCompare("...", "locale")
。
您可以在 Edge 15 和其他浏览器中查看此代码笔以获取解释:https://codepen.io/kgorob/pen/pweaWV。
P.S。
我不确定你的问题是因为 Map
class 具体来说,也许是你正在重新定义的其他一些标准 JS class。
问题是因为 these lines in Chakracore code。 Intl.js
是 javascript 内部用于执行各种国际化特定操作的文件。由于使用了 Map
,在 Intl.js
代码执行之前覆盖它(它被延迟执行),导致问题。这应该很快就会得到解决。