Обратный отсчет jQuery не работает со всеми версиями IE - PullRequest
1 голос
/ 06 июля 2011

Я использую отсчет jquery в одном из проектов rails со следующим кодом -

var timeoff = new Date("#{time_format(auction.end_time)}");
$("#myDivId .timerContent").countdown({until : timeoff, onExpiry:applySold, compact : true, layout : '', serverSync: serverTime });

, а методы serverTime имеют -

 function serverTime(){
    $.get("/server_time","", function(data){
      time = new Date(data);
    }, "text");
  return time;

}

Этот код работаеточень хорошо с Firefox, Safari и Chrome, но не работает в IE.В IE это выглядит так: Nan: NaN: NaN

Что может быть причиной этого?

PS В приведенном выше коде i в точке var timeoff = new Date ("# {time_format (auction).end_time)} ");

у меня есть формат времени как -" 2011-07-07T00: 00: 00 + 05: 30 "

и мой тип документа установлен как -

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

1 Ответ

0 голосов
/ 13 июля 2011

У меня есть точная проблема SAme, я использую Date.parse ($ (". Time"). Html), который хорошо выводит как для IE, так и для FF ... Когда я проверяю это в простом HTML, он работает и отсчитывает ОБА БРАУЗЕРЫ !! Но похоже, что RUBY rials.js или порядок загрузки JS конфликтуют с IE .. !!!!!

Протестируйте эту страницу на www.scratch22.net/testing в ОБА IE и ПОЖАРУ! работает отлично!! но не из реального приложения рельсов !!

EDIT Поэтому я попробовал много разных ответов из разных мест и смог заставить работать только один, сравнивая дату и время с часовым поясом в javascript для IE

.
    ruby-1.9.2-p180 :001 > Time.now
        => 2011-07-14 08:55:26 +1000 
    ruby-1.9.2-p180 :002 > Time.now.to_s
        => "2011-07-14 08:55:30 +1000" 
    ruby-1.9.2-p180 :004 > Time.now.to_datetime.to_s 
        => "2011-07-14T08:55:51+10:00"
    ruby-1.9.2-p180 :005 > Time.now.to_formatted_s 
        => "2011-07-14T08:56:18+10:00"
    ruby-1.9.2-p180 :003 > Time.now.to_datetime
        => Thu, 14 Jul 2011 08:55:35 +1000

** Изначально у меня было <% = Time.now.to_datetime%> и я не осознавал, что при печати на странице возвращается другой формат строки **

    ruby-1.9.2-p180 :007 > Time.now.to_formatted_s(:rfc822)
        => "Thu, 14 Jul 2011 08:57:26 +1000"

Последний был единственным форматом времени с часовым поясом, с которым я мог заставить IE работать как число ... Я избавился от Parse aswell ...

Все, что я хотел сделать, - это вернуть время между моментом, когда цена должна упасть, и показать обратный отсчет ...

Результирующий JS был чем-то вроде

    now = new Date().getTime(); // Thu, 14 Jul 2011 07:57:26 +1000
    drops_in = new Date("Thu, 14 Jul 2011 08:57:26 +1000").getTime(); //1 hour in future
    countdown = drops - now;
    $(".counter_holder").html(format_time(countdown)); // 00:35:25

внутри интервала обновления каждые 500 миллисекунд

Урок усвоен ...

    ruby-1.9.2-p180 :003 > Time.now.to_datetime

не равно так же, как

<% = Time.now.to_datetime%>

Вместо взамен

используйте <% = <strong>Time.now.to_formatted_s (: rcf822) %>
...