2013-05-15 34 views
9

Tôi muốn kích hoạt một sự kiện đơn giản khi video của tôi kết thúc. Tôi đã đặt nó trực tiếp dưới thẻ video của tôi.video sự kiện đã kết thúc không hoạt động

 <script type="text/javascript"> 
     var myPlayer = videojs("session_video"); 
      videojs("session_video").ready(function(){ 
      this.addEvent("ended", function(){ 
      alert('Here I am'); 
      }); 
     });  
    </script> 

Tuy nhiên tôi nhận được: TypeError: this.addEvent không phải là chức năng và tôi không thể tìm thấy lý do.

Bạn có thể xem video trực tiếp tại đây: 78.47.121.50 (ngăn xếp chồng sẽ không cho phép tạo liên kết đó) nhập mã 01-01-01-2012 để hiển thị video.

Bất kỳ thông tin chi tiết nào đều được bổ sung rất nhiều!

Trân trọng, Jason.

+0

videojs là gì? – Anoop

+0

Nó có thể là một vấn đề 'này', vì phương thức' ready' có vẻ không đồng bộ. Bạn nghĩ 'điều này' đề cập đến điều gì? Bạn đang mong đợi phương thức 'addEvent' hiện diện trên đối tượng nào? –

+0

@Sushil Đây là trình phát video kết hợp html, js và flash để tạo trình phát đa năng. (xem: http://videojs.com) –

Trả lời

46

"addEvent" và "removeEvent" được thay thế bằng "on" và "tắt"

thử:

this.on("ended", function(){ 
+1

Hi Lyn, điều này đã làm các trick! Rất cám ơn vì điều đó :) Bạn có thể cho tôi biết nơi bạn tìm thấy thông tin này không? Tôi không thể tìm thấy nó trong tài liệu. –

+0

tôi nhận thấy nó là nhận xét cam kết gần đây nhất trong repo github cho dự án. chỉ may mắn ngẫu nhiên thực sự. –

+0

Vâng, cảm ơn bạn đã chia sẻ! Ngu ngốc không bao gồm nó trong tài liệu ... Tôi hiện đang cố gắng bao gồm một plugin cho videoj nhưng nó vẫn sử dụng addEvent và _V_ Bạn có biết nếu tôi chỉ có thể thay thế cho on/off & videojs? –

5

Đối với những người vẫn còn có vấn đề với sự kiện đã kết thúc trong một số trình duyệt, bạn có thể dùng đến sửa lỗi này:

player.ready(function() { 
      var myPlayer = this; 

      playerInstance.on("timeupdate", function(event) { //chrome fix 
       if (event.currentTarget.currentTime == event.currentTarget.duration) { 
        console.log('video ended'); 
       } 
      }); 
    }); 
+0

Sự kiện đã kết thúc của tôi không kích hoạt khi sử dụng trình duyệt Chrome. Tôi đã thử sửa lỗi này, nhưng nó dường như không hoạt động. Tôi nghĩ rằng nó có thể cần phải được bao gồm trong: videojs ("video2"). Ready (function() { Điều đó có phù hợp hơn không? Không thể hiểu tại sao nó hoạt động trên các trình duyệt khác chứ không phải Chrome ... – mvprzy

+0

Tuyệt đối, hãy chuyển điều này sang chức năng sẵn sàng – Dziamid

+0

Điều này đã giúp tôi thoát khỏi lỗi chrome lạ đôi khi không kích hoạt kết thúc. Cảm ơn! –

0

Trên Stackoverflow tôi tìm thấy một phần của giải pháp mà bên kia tìm thấy từ Lyn Headley top answer.

<script type="text/javascript"> 
    //rename subtitle button 
    videojs.addLanguage('de', { 
     "captions off": "Untertitel aus", 
    }); 

    videojs(document.querySelector('video') /* or selector string */, { 
     techOrder: ['html5', 'flash'], 
     controls: true, 
     autoplay: false, 
     preload: 'false', 
     language: 'de', 
     flash: { 
      swf: 'video-js.swf' 
     } 
    }, function(){ 
     // Player (this) is initialized and ready. 
     this.on('ended', function(){ 
      alert('ended'); 
     }); 
     this.on('firstplay', function(){ 
      alert('firstplay'); 
     }); 
    }); 
</script> 

điều này sẽ cảnh báo bạn khi kết thúc video. đặt mã đó dưới mã video của bạn và nó sẽ hoạt động.

3

kết thúc sự kiện sẽ không kích hoạt nếu người dùng cuối cố tình tìm kiếm video để kết thúc việc giữ video dưới dạng tạm dừng. Tôi đã có thể làm cho nó làm việc như:

<script type="text/javascript"> 
 
     var player = videojs('my_video', {}, function() {}); 
 
     player.ready(function(){ 
 
     var duration_time = Math.floor(this.duration()); 
 
     this.on('timeupdate', function() { 
 
      var current_time = Math.floor(this.currentTime()); 
 
      if (current_time > 0 && (current_time == duration_time)){ 
 
      $('#continue_button').removeAttr("disabled"); 
 
      } 
 
     }); 
 
     }); 
 
    </script>

Các vấn đề liên quan