Javascript不能在Safari中工作

Javascript not working in Safari

本文关键字:工作 Safari 不能 Javascript      更新时间:2023-09-26

我写了一个jQuery倒计时脚本,它可以在所有其他浏览器中工作,除了Safari。

function countdown(secondsRemaining) {
secondsRemaining = Math.floor(secondsRemaining);
var days = Math.floor(secondsRemaining / 86400),
    hours = Math.floor((secondsRemaining - (days * 86400)) / 3600),
    minutes = Math.floor((secondsRemaining - (days * 86400) - (hours * 3600)) / 60),
    seconds = secondsRemaining - (days * 86400) - (hours * 3600) - (minutes * 60);
if(secondsRemaining > 0) {
    if(days < 10) { days = '0' + days; }
    if(hours < 10) { hours = '0' + hours; }
    if(minutes < 10) { minutes = '0' + minutes; }
    if(seconds < 10) { seconds = '0' + seconds; }
    jQuery('#countdown .days').html(days);
    jQuery('#countdown .hours').html(hours);
    jQuery('#countdown .minutes').html(minutes);
    secondsRemaining--;
}
window.setTimeout(function() {
    countdown(secondsRemaining);
}, 1000);
}
jQuery(function($) {
countdown(Math.floor((Date.parse('2012-02-15') - new Date().getTime())/1000));
});

你可以在这里看到它的作用:

http://davedesigner.launchinhd.com/

问题在于:

Math.floor((Date.parse('2012-02-15') - new Date().getTime())/1000)

在Safari中返回NaN(不是数字)。

尝试使用:

countdown(Math.floor((Date.parse('Feb 15, 2012') - new Date().getTime())/1000));

或者,您可以尝试这样做:

countdown(Math.floor((new Date(2012, 1, 15, 0, 0, 0, 0).getTime() - new Date().getTime())/1000));

在将来,你可以通过在你的代码中放置debug/alert/console消息来调试类似的东西。您将看到countDown中的调试消息没有出现在Safari中,然后您将能够推断出countDown没有开始调用。从这里,您可以查看第一次调用countDown的代码。看到这里,您可能想知道countDown的参数是否错误,所以您可能会尝试将其打印出来。在Safari中,您将看到NaN,因此您将打印出每个单独的部分,直到您看到问题。从这里,您可能会发现它不喜欢Date.parse(),所以您可能会阅读Date.parse(),看看您是否给了它正确的输入。