You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Edge浏览器中toLocaleString使用'default' locale报错的解决方法求助

解决旧版Edge中toLocaleString('default')报错的问题

这个问题出在旧版Edge(EdgeHTML内核,比如你提到的41.16299.1004.0版本)对'default'这个locale标识符的解析存在兼容性bug——虽然MDN标注了该方法的支持性,但实际老版本Edge无法正确识别'default'参数,从而抛出SCRIPT5121错误。下面提供两种可行的解决方案:

方案1:修复原代码的locale参数

直接去掉显式的'default'参数,改用默认值(不传第一个参数或传undefined)。因为toLocaleString的第一个参数默认就是当前环境的默认locale,效果和你想传'default'完全一致,但能避开老Edge的bug:

const date = new Date(dateValue);
// 方法A:省略第一个参数,直接传配置对象
const month = date.toLocaleString({ month: 'short' });
// 方法B:传入undefined作为第一个参数
const month = date.toLocaleString(undefined, { month: 'short' });

修改后既能保留原本获取当前locale月份缩写的功能,又能在旧版Edge中正常运行。

方案2:手动映射月份缩写(兼容性最强)

如果你的业务只需要固定的英文月份缩写(比如Jan/Feb这类mmm格式),可以直接维护一个月份缩写数组,通过getMonth()获取索引来取值。这种方法完全不依赖toLocaleString,兼容性覆盖所有浏览器:

// 按0-11的顺序对应1-12月的英文缩写
const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const date = new Date(dateValue);
const month = monthAbbrs[date.getMonth()];

如果需要支持多语言,你可以扩展这个数组为多语言对象,根据当前locale选择对应的缩写数组即可。

内容的提问来源于stack exchange,提问作者Souvik Ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:29:18