2015-08-26 33 views
0

如何檢測iOS上的視頻何時關閉?我正在運行videojs,它以原生視頻播放器的形式發佈HTML5視頻。爲了正確反應,我想在本地玩家關閉時獲得一個事件。如何檢測iOS離開全屏視頻?

這裏有幾個類似的問題,但沒有答案的工作。

首先解決我想:

player.addEventListener('webkitendfullscreen', onVideoEndsFullScreen, false); 

解決方案在2012年在這裏提出:How to figure out when a HTML5 video player enters the full screen mode on iOS/iPads?

此方法不適合我的工作。事件不會被解僱(至少在iOS模擬器中),我無法做任何事情。

二的解決方案我試過

// Do on resize 
if(video.webkitDisplayingFullscreen == false){ 
    // Exit was triggered  
} 

解決方案提出了甚至早於2012這裏:Is there an "onClose" event for the fullscreen video player on iPhone?

這種方法也行不通,視頻元素沒有這個屬性(至少在iOS模擬器中)。順便說一句,這種方法已被棄用。

有沒有人有關於如何獲得有關iOS離開全屏現在通知的想法?

回答

1

收聽fulscreenchange事件並檢查isFullscreen()

<link href="http://vjs.zencdn.net/4.12/video-js.css" rel="stylesheet"> 
<script src="http://vjs.zencdn.net/4.12/video.js"></script> 

<video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="268"> 
    <source src="http://vjs.zencdn.net/v/oceans.mp4" type='video/mp4'> 
    <source src="http://vjs.zencdn.net/v/oceans.webm" type='video/webm'> 
</video> 

<script> 
    videojs('my_video_1').ready(function(){ 
    var player = this; 
    player.on('fullscreenchange', function(){ 
     if(!player.isFullscreen()) { 
     alert('Exited fullscreen'); 
     } 
    }); 
    }); 
</script> 
+0

可悲的是,這也適用於本地玩家。所以沒有真正的區別。此外,本地玩家可能不會觸發'fullscreentrigger' - 但我會在明天嘗試。 – mvmoay

2

您現在可能已經找到了您的解決方案,但我在iPad和iPhone上遇到了同樣的問題。我發現沒有任何fullscreenchange事件在這些設備上觸發,儘管它在其他地方運行良好。

,我發現我的解決方案在http://html5wood.com/html5-video-fullscreen-change-events-on-ipad/,但我會太解釋是爲了完整性:

除了爲fullscreenchange各種其它事件偵聽器,我加

var video = document.getElementById(myVideo); 

video.addEventListener("webkitendfullscreen", function(){ 
    videoExitedFullscreen(video); 
}, false); 

(注意事件聆聽者在視頻本身上被調用,而不是像其他事件監聽者那樣在文檔上)

其中,我打電話給另一個函數,測試視頻當前是否全屏或者不顯示, ngly - 我創造了這個作爲一個功能,所以我可以很容易地從內每個需要的各種瀏覽器
多個事件偵聽器調用它(如果你不知道這些是什麼,看到https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#Prefixing

//function to be run when full screen is closed 
function videoExitedFullscreen(videoElement){ 

    //check if an element is currently full screen 
    if(document.fullScreenElement || document.webkitIsFullScreen == true || document.mozFullScreen || document.msFullscreenElement){ 

     //do whatever here if the video is now (just became) full screen 

    } else { 
     console.log('fullscreen was closed'); 

     //do whatever you want on fullscreen close, like pause or mute 
    } 
}