我的 JavaScript 代码在 Chrome、IE 和 Firefox 上运行,但是当它进入 safari 时它不起作用。我相信我已经缩小了问题的范围:在 JavaScript 中创建“新日期”时,除了 safari 之外,所有其他浏览器都可以识别我的字符串。
HTML:
<form>
<input id="timeIn" value="1:00 AM"/>
<input id="dateIn" value="1/20/2012"/>
<input id="timeOut" value="2:00 AM"/>
<input id="dateOut" value="1/21/2012"/>
</form>
JavaScript:
function calcHours() {
// Build datetime objects and subtract
var timeIn = new Date($('#timeIn').val() + $('#dateIn').val());
if(!isValidDate(timeIn)) return -1;
var timeOut = new Date($('#timeOut').val() + $('#dateOut').val());
if(!isValidDate(timeOut)) return -1;
var hours = (timeOut - timeIn)/(1000*60*60);
return hours.toFixed(1);
}
function isValidDate(d) {
console.log(d);
if ( Object.prototype.toString.call(d) === "[object Date]" ) {
// it is a date
if ( isNaN( d.getTime() ) ) { // d.valueOf() could also work
// date is not valid
console.log("isn't valid");
return 0;
}
else {
// date is valid
console.log("is valid");
return 1;
}
}
else {
// not a date
console.log("isn't valid");
return 0;
}
}
var hours = calcHours();
console.log("Hours:", hours);
我做了一个 js 小提琴:http: //jsfiddle.net/mq72k/7/。如果你用chrome打开它,它会正常工作。如果您在 Safari 中打开它,它会显示相同输入的日期无效并且根本不起作用。我也尝试过改变字符串,添加空格,不同的顺序等。
有没有人知道如何解决这个跨浏览器兼容性问题?