2013-05-15 50 views
9

我想在視頻播放完成後觸發簡單事件。我直接在視頻標籤下面放置這個。已結束活動videojs無法正常工作

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

但是我得到:TypeError:this.addEvent不是一個函數,我找不到原因。

你可以在這裏看到它:78.47.121.50(stackoverflow將不允許做一個鏈接) 輸入代碼01-01-01-2012調出視頻。

任何洞察力都非常贊!

親切的問候, 傑森。

+0

是什麼videojs? – Anoop

+0

這可能是一個'這個'問題,因爲'ready'方法看起來是異步的。你認爲這個指的是什麼?您期待「addEvent」方法出現在哪個對象上? –

+0

@Sushil這是一個視頻播放器,它結合了html,js和flash來創建一個通用播放器。 (見:http://videojs.com) –

回答

46

「的addEvent」和「removeEvent」是「的」取代和「關」

嘗試:

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

嗨,Lyn,這個伎倆!非常感謝:) 你能告訴我你在哪裏找到這個信息?我無法在文檔中找到它。 –

+0

我注意到它是github回購項目中最新的提交評論。只是偶然的運氣真的。 –

+0

恩,謝謝分享!愚蠢的不包括它在文檔... 我現在試圖包括一個videojs插件,但它仍然使用addEvent和_V_ 你知道如果我可以只是取代開/關&videojs? –

5

對於那些誰仍然有一些瀏覽器,你可以採取與端事件的問題此修復程序:

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

使用Chrome瀏覽器時,我結束的活動未觸發。我已經嘗試了此修復程序,但它似乎不起作用。我認爲它可能需要包含在: videojs(「video2」)。ready(function(){ 更合適嗎? 無法理解爲什麼它適用於其他瀏覽器,但不適用於Chrome ... – mvprzy

+0

當然,將其移動到ready函數 – Dziamid

+0

這有助於我解決奇怪的鉻錯誤,有時不會觸發結束。謝謝! –

0

在Stackoverflow我找到解決方案的一部分其他部分找到它從Lyn Headley頂部答案。

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

這會在視頻結束時提醒您。 將其置於您的視頻 的代碼下,它應該可以正常工作。

3

結束如果最終用戶故意尋找視頻以結束視頻暫停,則不會觸發事件。我能夠把它作爲工作:

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