近期需实现一个金额输入框的功能,采用了vue-currency-input组件,测试发现IE11+,Chrome,微信开发者工具都能正常使用,只有手机端的微信浏览器不支持。
查阅源码发现是组件内使用 Intl.NumberFormat
检测金额的格式,而手机端的微信浏览器并没有完整的实现该功能。
Intl
对象是 ECMAScript 国际化 API 的一个命名空间,它提供了精确的字符串对比、数字格式化,和日期时间格式化。
Intl.NumberFormat
可以根据不同语言环境对数值字符串进行不同的呈现处理。
兼容性处理
采用FormatJS对ECMA-402 Intl API的polyfill。
一、安装
yarn add @formatjs/intl-pluralrules
yarn add @formatjs/intl-numberformat
二、引入
import '@formatjs/intl-pluralrules/polyfill'
import '@formatjs/intl-pluralrules/locale-data/zh'
import '@formatjs/intl-numberformat/polyfill'
import '@formatjs/intl-numberformat/locale-data/zh'