有的需求是視頻自動全屏播放,這一點在iphone上是預設的。但是在android系統上就需要手動點擊全屏按鈕。現在video標籤的全屏API一直在草案階段,各個瀏覽器的API也是差異。所幸的是現在大部分的手機瀏覽器核心都是webkit的。所以可以藉助瀏覽器的全屏API來實現視頻的全屏,當然瀏覽器的全屏API並不局限於video標籤。在PC端處理video可以使用一個比較成熟的外掛程式videojs。所以這次代碼僅針對移動端。從網上借鑒了一些代碼,我自己精簡掉了一些移動端用不到的代碼。並添加了“全屏後自動播放”、“退出全屏後暫停”以及“播放完畢後自動結束全屏”這三個事件。目前測試了3部android手機,其中一部“全屏後自動播放”不支援。為了方便在PC測試暫時注釋掉了系統的判斷。在使用的時候放出即可。
| 代碼如下 |
複製代碼 |
<!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,minimal-ui"> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> *{ padding: 0; margin: 0; } video{ display:block; margin:0 auto; max-width:100%; } </style> </head> <body> <video id="video" src="oceans.mp4" controls></video> <script type="text/javascript"> var fullscreen = function(elem) { var prefix = 'webkit'; if ( elem[prefix + 'EnterFullScreen'] ) { return prefix + 'EnterFullScreen'; } else if( elem[prefix + 'RequestFullScreen'] ) { return prefix + 'RequestFullScreen'; }; return false; }; function autoFullScrenn(v){ var ua = navigator.userAgent.toLowerCase(); var Android = String(ua.match(/android/i)) == "android"; // if(!Android) return;//非android系統不使用; var video = v,doc = document; var fullscreenvideo = fullscreen(doc.createElement("video")); if(!fullscreen) { alert("不支援全螢幕模式"); return; } video.addEventListener("webkitfullscreenchange",function(e){ if(!doc.webkitIsFullScreen){//退出全屏暫停視頻 this.pause(); }; }, false); video.addEventListener("click", function(){ this.play(); video[fullscreenvideo](); }, false); video.addEventListener('ended',function(){ doc.webkitCancelFullScreen(); //播放完畢自動結束全屏 },false); }; var v = document.getElementById('video'); autoFullScrenn(v); </script> </body> </html> |