2

正如您在下面看到Intl.NumberFormat.formatToParts的,Microsoft Edge 似乎缺少: Microsoft Edge 中的 formatToParts

但是,MDNCanIUse都告诉我我可以...

我应该做些什么?我似乎找不到任何谈论这个问题的网站,也找不到 polyfill(编辑:polyfill 实际上在 MDN 上可用,但正如我在最后一句话中所说,我对这种方法的原因更感兴趣缺少,而 MDN 和 CanIUse 都说它在 Edge 上可用)。

我这样使用它:

return (_numberFormat as any).formatToParts(val).map(({type, value}) => {
    if (type === 'group')
        return ' ';

    return value;
}).reduce((string, part) => string + part);

(我所做的只是使用适当的空格字符而不是 unicode 默认字符,这对于我的客户来说太小了)

我知道我可以解决这个问题(执行基本格式,然后自己替换 unicode 空间,或者实现 polyfill),但我更感兴趣的是这种方法似乎并不存在于 Edge 上,而地球上的每个人似乎确信确实如此。

任何输入表示赞赏:)

亲切的问候,

4

1 回答 1

2

Edge中确实缺少这些方法:

console.log(typeof Intl.NumberFormat.prototype.formatToParts);
console.log(typeof Intl.DateTimeFormat.prototype.formatToParts);
列出了functionFirefox 和undefinedEdge 中的原型属性类型。

可能MDN 文章被微软在 TypeScript 中键入函数(这与它们在 Edge 中实现无关)并将问题列为已修复而误导。


请注意,关于 formatToParts 的 MSDN 文章的 google 链接现在只需重定向到 MDN。


有关 MDN ( https://github.com/mdn/browser-compat-data/pull/3769 ) 上的 Edge 支持列表的更新(由傻瓜在评论中报告)。

测试和调查确认Edge 18formatFromParts添加了支持。

但是,截至 2019 年 4 月 9 日(昨天),这还没有通过 Windows 更新推送到我的机器上,并且 Edge 在(汉堡点 > 设置 > 关于这个应用程序)下将其版本信息显示为“Microsoft Edge 42.17134.1.0 EdgeHTML 17.134”。谷歌搜索“是否通过 Windows 更新推送了 Windows 1810”揭示了一段麻烦的历史,这足以解释为什么我仍在运行 Win 1803 和 Edge 17。

我建议MDN 上的支持页面可以通过将 Edge 支持的“是”替换为“18”来消除混淆。

于 2019-04-05T03:42:03.503 回答