Javascript не работает в Safari - PullRequest
0 голосов
/ 19 ноября 2011

У меня написан скрипт обратного отсчета 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/

1 Ответ

6 голосов
/ 19 ноября 2011

Проблема с:

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

Возвращает NaN (не число) в Safari.

Попробуйте использовать:

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));

В будущем вы можете отлаживать подобные вещи, размещая сообщения отладки / оповещения / консоли по всему коду. Вы бы увидели, что ваше отладочное сообщение в countDown не появилось для Safari, и тогда вы бы смогли сделать вывод, что countDown не был вызван. Оттуда вы можете посмотреть код, который вызывает countDown в первый раз. Глядя на это, вы можете задаться вопросом, был ли аргумент countDown неверным, поэтому, возможно, вы попытаетесь распечатать это. В Safari вы видите NaN, поэтому вы распечатываете каждую отдельную деталь, пока не увидите проблему. Оттуда вам может показаться, что ему не понравился Date.parse (), поэтому, возможно, вы прочитали бы Date.parse (), чтобы увидеть, правильно ли вы вводите данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...