2015-05-08 118 views
0

我正在使用JavaScript代碼來檢測視頻是否已加載。將javascript添加到html標記

一旦它被加載,我想添加一個自動播放屬性到標籤,使其播放,但我找不到添加該屬性的方法。這裏是我使用的代碼:

window.addEventListener('load', function() { 
    var video = document.querySelector('#bgvid'); 
    var div = document.getElementById('#bgvid'); 

    function checkLoad() { 
     if (video.readyState === 4) { 
      alert('video is loaded') 
      video.setAttribute("autoplay") 
     } else { 
      setTimeout(checkLoad, 100); 
     } 
    } 

    checkLoad(); 
}, false); 

*******************解決方案*************** *****

首先,謝謝DontVoteMeDown的幫助。

正確的代碼應該是:

document.getElementById('bgvid').addEventListener('canplaythrough', function() { 
    this.play(); 
    }); 

回答

1

爲什麼不將屬性添加到標籤?從docs

自動播放:(......)視頻會自動開始,只要它可以這樣做,回放沒有停下來完成加載數據。

所以我認爲(不確定,確實)視頻將盡快加載視頻的一部分開始播放。

無論如何,如果你仍然要添加的屬性,該video標籤有一些Events,從文檔:

  • canplay:當足夠的數據可用,媒體可以發揮,至少已發送幾幀;
  • canplaythrough:當就緒狀態改變爲CAN_PLAY_THROUGH時發送,表示整個媒體可以不間斷地播放(...);

所以,你可以使用其中一個事件來設置該屬性,e.g:

document.getElementById('bgvid').addEventListener('canplay', function() { 
    this.setAttribute("autoplay", "autoplay"); 
}); 

有了這個,你能避免使用超時,這是不是最好的方法。

+0

我知道自動運行,應該使視頻開始播放,只有當足夠的數據緩衝,但實際上每個瀏覽器的行爲不同,有時視頻被卡住,這就是爲什麼我喜歡先負載完整的視頻,然後才能播放它 –

+1

您的代碼很好 - 需要更改的一個方面是setattribute,因爲在加載文檔後添加自動播放屬性並沒有幫助。適當的解決方案是添加video.play() –

+0

@EyalBinehaker很好,你結束了完美的解決方案。 – DontVoteMeDown

1

啓用自動播放功能時,不需要檢查其加載狀態,視頻只會在加載時播放。

video.autoplay = true; 

here

+0

感謝您的幫助,因爲在文檔加載後添加自動播放屬性並沒有幫助。適當的解決方案是video.play()。 –

相關問題