我正在尝试使用jquery.timeago插件在我的应用程序中添加timeago的功能。
我正在使用knockout绑定来显示时间列表。
它在chrome中工作正常,但无法在其他浏览器中显示数据。
这是我的脚本代码:
<script src="Scripts/jquery-2.1.1.min.js"></script>
<script src="Scripts/knockout-3.2.0.js"></script>
<script src="Scripts/jquery.timeago.js"></script>
<script>
$(function () {
var viewModel = {
arr: [{
msgdate: new Date()
}, {
msgdate: new Date()
}]
};
ko.bindingHandlers.timeago = {
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
var $this = $(element);
$this.attr('title', value);
if ($this.data('timeago')) {
var datetime = $.timeago.datetime($this);
var distance = (new Date().getTime() - datetime.getTime());
var inWords = $.timeago.inWords(distance);
$this.data('timeago', { 'datetime': datetime });
$this.text(inWords);
} else {
$this.timeago();
}
}
};
ko.applyBindings(viewModel);
});
</script>
Html部分如下:
<div data-bind="foreach: arr">
<div class="timeago" data-bind="timeago: msgdate"></div>
</div>
示例在这里也是小提琴: http://jsfiddle.net/ugqkd60p/
请帮我解决一下。 感谢。
答案 0 :(得分:0)
似乎FF和IE中的date.parse
方法无法解析默认的日期时间字符串,例如:
Thu Oct 30 2014 15:25:06 GMT+0100 (Central Europe Standard Time)
无论如何jquery.timeago
明确支持iso8601日期格式,所以只需使用适用于所有浏览器的toISOString
method:
$this.attr('title', value.toISOString());
演示JSFiddle。