我有类似的代码:
const rtf = new Intl.RelativeTimeFormat('en', { style: 'short', numeric: "auto" });
在Safari / 605.1.15中触发错误的
TypeError: undefined is not a constructor (evaluating 'new Intl.RelativeTimeFormat('en', { style: 'short', numeric: "auto" })')
现代JS中的一个如何解决可能不存在Intl API的事实?
答案 0 :(得分:2)
此方法不受很好的支持。 Can I use RelativeTimeFormat?
无论使用什么浏览器,您都可以使用可模拟所需功能的软件包。
我发现可以使用relative-time-format个npm软件包。
安装
npm安装相对时间格式--save
使用
import RelativeTimeFormat from "relative-time-format"
import en from "relative-time-format/locale/en.json"
RelativeTimeFormat.addLocale(en)
// Returns "2 days ago"
new RelativeTimeFormat("en", {
style: "long" // "long" is the default. Other options: "short", "narrow".
}).format(-2, "day")
要检查浏览器是否兼容:
if (Intl === void 0 || typeof Intl.RelativeTimeFormat !== 'function') {
// Browser not compatible
}
替代:
const rtf = (Intl &&
Intl.RelativeTimeFormat &&
new Intl.RelativeTimeFormat('en', {
style: 'short',
numeric: "auto",
})) || false;
if (!rtf) {
// Not compatible
}