【问题标题】:jQuery Countdown not working with all versions of IEjQuery Countdown 不适用于所有版本的 IE
【发布时间】:2011-07-06 12:15:51
【问题描述】:

我在其中一个带有以下代码的 rails 项目中使用 jquery 倒计时 -

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

这可能是什么原因造成的?

附:在上面的代码中,我在 var timeoff = new Date("#{time_format(auction.end_time)}");

我的时间格式为 - “2011-07-07T00:00:00+05:30”

并且我的 Doc 类型设置为 -

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

【问题讨论】:

  • 除非我看到倒计时代码,否则无法正确回答,但我的猜测是保存数字的变量需要 parseInt() 包裹它们
  • 我正在使用 jquery 倒计时插件 -keith-wood.name/countdown.html 提供 .countdown 方法。
  • 如果我没记错的话,serverTime() 方法中的 time 应该始终是未定义的。 $.get 异步加载数据并在回调中将其分配给时间,而 `time 在设置之前已经返回。
  • $.get 会导致浏览器兼容吗?我在 FF 和 Chrome 中有相同的代码,只有 IE 是罪魁祸首。谢谢,试试你的建议。

标签: jquery ruby-on-rails counter countdown


【解决方案1】:

我有完全相同的问题,我使用的是 Date.parse($(".time").html),它对 IE 和 FF 都输出良好...当我在纯 HTML 中测试它时,它可以工作并倒计时两个浏览器!!但它似乎 RUBY rias.js 或 JS 的加载顺序与 IE 冲突..!!!!!

在 www.scratch22.net/testing 在 IE 和 FIREFIOX 中测试这个页面!!工作正常!!但不是来自实际的 Rails 应用程序!!

编辑 所以我从很多不同的地方尝试了很多不同的答案,但只能得到一个用于比较 IE 的 javascript 中的日期时间和时区

    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

** 我最初有 并没有意识到这在打印到页面时会返回不同的字符串格式**

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

最后一个时间格式是唯一的带有时区的时间格式,我可以让 IE 将其用作数字...我也摆脱了 Parse...

我想做的就是返回从现在到价格应该下跌之间的时间, 并显示倒计时...

生成的 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_formatted_s(:rcf822) %>

【讨论】:

  • 我通过更改日期格式找到了解决方案。我的旧日期格式也包括时区,这导致 Date.new() 没有创建 Date 对象。我建议尝试在 IE 控制台中运行以下代码。 Date.parse($(".time").html).to_s 检查这是否为您提供了正确的日期对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多