在数据文件中遇到字符串中的空字符,这会导致IE出现问题。一个codepen就在这里;
http://codepen.io/gradualstudent/pen/DBExf
能够解析Chrome,Firefox,Safari上的数据文件以及Windows上的Chrome和Firefox数据文件中的日期,但不能解析IE中的日期(9,10,11)。数据文件是使用d3.csv(...)
这样的字符串示例表面上是"4/23/2014"
。但它无法解析为IE中的日期:
JSON.stringify(dt); // "4/23/2014"
new Date(dt); // [date] Invalid Date
Date.parse(dt); // NaN
尽管字符串文字解析得很好:
new Date("4/23/2014") // [date] Wed Apr 23 2014 00:00:00 GMT-0400
事实证明,数据文件中的字符串有很多空字符:
var dta = [];
for (var i=0; i<dt.length; i++) { dta[i] = dt.charAt(i); }
JSON.stringify(dta);
["", "4", "", "/", "", "2", "3", "", "/", "", "2", "0", "1", "4", ""]
如何删除这些字符或阻止它们被读入?
答案 0 :(得分:2)
清除问题所在的输入将是一个更清洁的解决方案。但是如果你必须在解析之前清理输出,这可能会起作用。
如果在解析日期字符串之前运行正则表达式,它似乎可以解决问题。 Codepen的代码片段与Regex一起添加。
var dt = "4/23/2014";
$("#dt").html(new Date(dt))
//Clear everything except expected items in a date
// Ordinary null character
var dt1 = dt.replace(/[^0-9/]/ig, "");
$("#dt1").html(new Date(dt1))
//Or to specifically target the character causing the issues
// Ordinary null character
var dt2 = dt.replace(/[\u200E]/ig, "");
$("#dt2").html(new Date(dt2))
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
dt: <code id="dt"></code>
<br>dt1: <code id="dt1"></code>
<br>dt2: <code id="dt2"></code>
&#13;