我正在使用Vimeo及其自動播放功能。問題是自動播放功能無法在移動設備上使用,而且我有一些計時器會假設視頻已經自動播放。我知道視頻播放時會觸發一個事件,但我似乎可以找到關於如何判斷自動播放是否正常工作的任何信息。有沒有辦法說明自動播放是否在編程上工作。我想要做的就是這樣..檢測Vimeo視頻是否會自動播放
自動播放在這個設備上工作或自動播放火嗎? 如果不忘記定時器並立即顯示所有內容。
我正在使用Vimeo及其自動播放功能。問題是自動播放功能無法在移動設備上使用,而且我有一些計時器會假設視頻已經自動播放。我知道視頻播放時會觸發一個事件,但我似乎可以找到關於如何判斷自動播放是否正常工作的任何信息。有沒有辦法說明自動播放是否在編程上工作。我想要做的就是這樣..檢測Vimeo視頻是否會自動播放
自動播放在這個設備上工作或自動播放火嗎? 如果不忘記定時器並立即顯示所有內容。
正如您所說,Vimeo Player的自動播放功能在移動設備上無法正常工作(這在this article中得到了通知),並且JavaScript API似乎在這些設備上被破壞。您仍然可以使用Vimeo's Player JavaScript API來操作非移動設備上的視頻,並推斷移動設備是否支持JavaScript API。
確定是否自動播放的工作在非移動設備:
要檢查是否自動播放已經開始在這些設備上都VIMEO播放器的工作原理,你可以結合player.getPaused()
準備在網頁上使用的play
事件。
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://player.vimeo.com/api/player.js"></script>
</head>
<body>
<iframe id="player" src="https://player.vimeo.com/video/78716964?autoplay=1&title=0&byline=0&portrait=0" width="640" height="360" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<script>
var player = new Vimeo.Player($('#player'));
var state = { autoplaying : false };
player.on('play',() => {
state.autoplaying = true;
player.off('play');
});
player.getPaused().then((paused) => {
var playing = !paused;
state.autoplaying = state.autoplaying || playing;
});
</script>
</body>
</html>
確定是否自動播放的工作在移動設備上:
現在有沒有乾淨的方式來確定此移動設備上,因爲的JavaScript API是壞了。您可以嘗試通過調用任何API方法來檢測JavaScript API是否已啓用並等待承諾結果。如果結果沒有在短時間內出現,那麼你可以說API不起作用。所以,讓我們假設自動播放不起作用。
var player = new Vimeo.Player($('#player'));
var state = {
autoplaying : false,
apiEnabled : null
};
player.on('play',() => {
state.autoplaying = true;
player.off('play');
});
setTimeout(() => {
if (state.apiEnabled === null) {
state.apiEnabled = false;
// Do something
}
}, 100);
player.getPaused().then((paused) => {
state.apiEnabled = true;
// Do something
});
你也可以使用一些像TECHNIC以detecting user agent確定,如果你是在移動設備,因此假設自動播放未執行。
我建議你不要破解Vimeo的iframe來確定自動播放狀態。公共API應該是爲了確保您的腳本將來能夠正常工作的方式。