使用jquery.timeago插件的TimeAgo功能在IE& Mozilla的

时间:2014-10-30 14:21:46

标签: jquery knockout.js jquery-plugins

我正在尝试使用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/

请帮我解决一下。 感谢。

1 个答案:

答案 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