问题
最近在钉钉微应用开发中,引入了一个日历控件,Android高版本钉钉真机测试出现了 Intl is not defined,然后大致了解了下这个对象.
Intl 对象是 ECMAScript 国际化 API 的一个命名空间,它提供了精确的字符串对比、数字格式化,和日期时间格式化。Collator,NumberFormat 和 DateTimeFormat 对象的构造函数是 Intl 对象的属性。本页文档内容包括了这些属性,以及国际化使用的构造器和其他语言的方法等常见的功能。
MDN web docs网站列举的此对象兼容性如下:
但是打印不兼容的浏览器UA,明明也都是在兼容名单里的,有点莫名其妙.
最后尝试手动引入此对象.
Vue下的解决方法
- 首先使用npm安装Intl, 运行
npm install intl
- 然后在Vue的main.js中添加如下代码
if(!global.Intl){
require('intl');
require('intl/locale-data/jsonp/zh-Hans-CN')
}
PS. intl的locale-data中包含很多种语言时间,引入一个即可,上述引入的是中文时间.