2014-10-30 2 views
1

jquery.timeago 플러그인을 사용하여 애플리케이션에 timeago 기능을 추가하려고합니다.jquery.timeago 플러그인을 사용하는 TimeAgo 기능이 IE 및 Mozilla에서 작동하지 않습니다.

나는 녹아웃 바인딩을 사용하여 시간 목록을 표시하고 있습니다.

크롬에서는 정상적으로 작동하지만 다른 브라우저에서는 데이터를 표시 할 수 없습니다.

<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

은 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

관련 문제