【发布时间】:2016-07-13 13:03:03
【问题描述】:
我在 IE 中遇到了一个可能的错误,其中调用 JavaScript .length 函数返回一个值,如果/当字符串派生自 .toLocaleString() 时,该值将关闭 1。
var d = new Date();
var locale = navigator.language;
var month = d.toLocaleString(locale, { month: "long"});
// month.length will return the length of the month string +1
//(eg: if month = "March", month.length will return 6.)
有趣的是,上面的代码示例将在以下情况下返回 true(在 IE 中):(month[0] should be "M")
month[0] == "";
month[1] == "M";
month[2] == "a";
month[3] == "r";
month[4] == "c";
month[5] == "h";
在我的特定情况下,这会导致我需要在该月 .slice() 出现问题。示例:如果月份是 3 月,则 IE 将为 month.slice(0,3) 返回“Ma”而不是“Mar”。
这是 IE 的已知错误吗?是否有针对此问题的修复和/或解决方法?
在 IE 和 Chrome/Firefox/Safari 中运行此 fiddle 并注意 month.length 在 IE 中的错误。
我的环境:
操作系统:Win Server 2012 R2
IE 版本:11.0.9600.18231(更新版本:11.0.29)
语言环境:英语/美国
【问题讨论】:
-
向我们提供您的操作系统、当前区域设置和浏览器版本构建。
-
这很奇怪。我得到相同的结果。尝试了 .trim() 和 .replace(/\s+/, "") ,但仍然在开头显示额外的空白字符
-
month.charCodeAt(0)的结果是什么? -
@apsillers - month.charCodeAt(0) 返回 8206
-
@Knu - 使用请求的信息更新了 OP
标签: javascript locale internet-explorer-11 string-length