我无法理解一些似乎在Edge中表现不同的JavaScript的情况。 特别把它煮成:
var testi = new Date().toLocaleTimeString();
var len2 = testi.length;
alert(len2);
我在Edge中的长度是17,在Chrome和IE中它是10 字符串中似乎有一些幻像空格,它也搞砸了我试图将其子串起来。
https://jsfiddle.net/m1m8h7ym/
仅供参考我的时区是美国中部。
答案 0 :(得分:11)
看起来微软正在the invisible left-to-right mark中滑倒。这也发生在边缘模式下的IE11中。我通过循环遍历字符串中的每个字符并将其传递给encodeURIComponent()
var output = document.getElementById("output");
var testi = new Date().toLocaleTimeString();
var row;
for (var i = 0, len = testi.length; i < len; i++) {
row = document.createElement("pre");
row.innerHTML = encodeURIComponent(testi[i]);
output.appendChild(row);
}
<div id="output"></div>
你可以通过unicode删除它来删除它,可以通过表达式\u200E
在正则表达式中捕获它。
var output = document.getElementById("output");
var testi = new Date().toLocaleTimeString().replace(/\u200E/g,"");
var row;
for (var i = 0, len = testi.length; i < len; i++) {
row = document.createElement("pre");
row.innerHTML = encodeURIComponent(testi[i]);
output.appendChild(row);
}
<div id="output"></div>