jQuery CuteTime插件和Ajax数据-IE+Safari中的错误转换



我有一个带有liveticker的网站,它加载新的论坛事件并将它们添加到HTML表中。

对于时间字段,我使用ajax加载每个事件的日期时间(例如2013-02-15 17:28:03),并通过jquery插件cutetime将其转换为人类可读的格式,例如22 minutes ago

CuteTime的问题是,最近的版本(从2010年开始)在处理动态加载的AJAX数据时存在一些问题。

我的当前解决方案似乎有点奏效:

1.首先ajax调用将整个论坛事件加载为html表,然后我分配cutetime插件:

// initial load at page startup
$('#responsecontainer').load('./liveticker', {ajax:1}, function() {
    // convert datetime to readable date format
    $('.timestamp').cuteTime();
});

2.然后我每30秒检查一次新事件,并在加载的数据上每次分配cuteTime:

$('#responseEvents').load('./liveticker', {ajax:lastevent}, function() {
    // stuff...
    // convert datetime to readable date format
    $('.timestamp').cuteTime();
})

这似乎适用于Firefox和Chrome。但是,在InternetExplorer9中,所有$(.timestamp)元素都会分配相同的文本:just now

有人知道这个bug/问题的解决方案吗?

--

注意:在cutetime网站上,我发现了一条关于ajax的评论。有人说了他的变通办法:

我不得不破解我的应用程序来制作额外的字段,所以我首先复制了所有字段将值输入到我的所有跨度中,然后调用cuteTime。

但我不确定这是否与我现在面临的Internet Explorer Bug有关。。。

这不是AJAX调用。事实上,我使用了普通的日期时间格式(来自mysql),并尝试用cutetime转换该格式。

在阅读开发者的网站时,我偶然发现了这句话:

时间戳必须是有效的Date()。解析"able"格式的

以及:

如果既不存在cutetime属性也不存在有效的对象文本,则假定时间戳为"now"。


宾果!现在我正在用将日期时间格式化为ISO8601日期格式服务器站点

$timeCode = date("c", strtotime( $row['datetime'] ));

我得到的日期格式是:2013-02-17T15:26:21+01:00,它适用于所有浏览器中的js转换!

最新更新