·您当前的位置:首页 > 技术教程 > Html5技术 >

[html5]html5视频全屏实现的源代码

时间:2016-02-17 09:34酷播
[html5]html5视频全屏实现的源代码

[html5]html5视频全屏实现的源代码

  1. <!doctype  html> 
  2. <html> 
  3. <head> 
  4. <meta charset="utf-8" /> 
  5. <title>全屏问题</title> 
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
  7. <meta http-equiv="imagetoolbar" content="no"/> 
  8. <meta name="apple-mobile-web-app-capable" content="yes"/> 
  9. <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 
  10. <style type="text/css"> 
  11. *{ 
  12.     padding: 0px; 
  13.     margin: 0px; 
  14. } 
  15.   
  16. body div.videobox{ 
  17.     width: 400px; 
  18.     height: 320px; 
  19.     margin: 100px auto; 
  20.     background-color:#000; 
  21. } 
  22.   
  23. body div.videobox video.video 
  24. { 
  25. width: 100%; 
  26.     height: 100%; 
  27. } 
  28.   
  29. :-webkit-full-screen { 
  30.   
  31. } 
  32.   
  33. :-moz-full-screen { 
  34.   
  35. } 
  36.   
  37. :-ms-fullscreen { 
  38.     
  39. } 
  40.   
  41. :-o-fullscreen { 
  42.     
  43. } 
  44.   
  45. :full-screen {  
  46.    
  47. } 
  48.   
  49. :fullscreen { 
  50.    
  51. } 
  52.   
  53. :-webkit-full-screen video { 
  54.   width: 100%; 
  55.   height: 100%; 
  56. } 
  57. :-moz-full-screen video{ 
  58.     width: 100%; 
  59.     height: 100%; 
  60. } 
  61.     </style> 
  62. </head> 
  63. <body> 
  64.    
  65.   
  66. <div id="videobox"> 
  67.        
  68.     <video controls="controls" preload="preload" id="video" poster="poster.jpg"> 
  69.       <source src="./movie.ogg" type="video/ogg" /> 
  70.       <source src="./movie.mp4" type="video/mp4" /> 
  71.       <source src="./movie.webm" type="video/webm" /> 
  72.       <object data="./movie.mp4" width="100%" height="100%"> 
  73.         <embed width="100%" height="100%" src="./movie.swf" /> 
  74.       </object> 
  75.   
  76.     </video> 
  77.     <button id="fullScreenBtn">全屏</button> 
  78. </div> 
  79.    
  80.    
  81. <script type="text/javascript"> 
  82.    
  83. //反射調用 
  84. var invokeFieldOrMethod = function(element, method)  
  85. { 
  86.    var usablePrefixMethod; 
  87.    ["webkit", "moz", "ms", "o", ""].forEach(function(prefix) { 
  88.        if (usablePrefixMethod) return; 
  89.        if (prefix === "") { 
  90.            // 无前缀,方法首字母小写 
  91.            methodmethod = method.slice(0,1).toLowerCase() + method.slice(1);    
  92.        } 
  93.        var typePrefixMethod = typeof element[prefix + method]; 
  94.        if (typePrefixMethod + "" !== "undefined") { 
  95.            if (typePrefixMethod === "function") { 
  96.                usablePrefixMethod = element[prefix + method](); 
  97.            } else { 
  98.                usablePrefixMethod = element[prefix + method]; 
  99.            } 
  100.        } 
  101.    }); 
  102.      
  103.        return usablePrefixMethod; 
  104. }; 
  105.      
  106. //進入全屏 
  107.  function launchFullscreen(element)  
  108.    { 
  109.     //此方法不可以在異步任務中執行,否則火狐無法全屏 
  110.      if(element.requestFullscreen) { 
  111.        element.requestFullscreen(); 
  112.      } else if(element.mozRequestFullScreen) { 
  113.        element.mozRequestFullScreen(); 
  114.      } else if(element.msRequestFullscreen){  
  115.        element.msRequestFullscreen();   
  116.      } else if(element.oRequestFullscreen){ 
  117.         element.oRequestFullscreen(); 
  118.     } 
  119.     else if(element.webkitRequestFullscreen) 
  120.      { 
  121.        element.webkitRequestFullScreen(); 
  122.      }else{ 
  123.        
  124.         var docHtml  = document.documentElement; 
  125.         var docBody  = document.body; 
  126.         var videobox  = document.getElementById('videobox'); 
  127.         var  cssText = 'width:100%;height:100%;overflow:hidden;'; 
  128.         docHtml.style.cssText = cssText; 
  129.         docBody.style.cssText = cssText; 
  130.         videobox.style.cssText = cssText+';'+'margin:0px;padding:0px;'; 
  131.         document.IsFullScreen = true; 
  132.   
  133.       } 
  134.    } 
  135. //退出全屏 
  136.    function exitFullscreen() 
  137.    { 
  138.        if (document.exitFullscreen) { 
  139.          document.exitFullscreen(); 
  140.        } else if (document.msExitFullscreen) { 
  141.          document.msExitFullscreen(); 
  142.        } else if (document.mozCancelFullScreen) { 
  143.          document.mozCancelFullScreen(); 
  144.        } else if(document.oRequestFullscreen){ 
  145.             document.oCancelFullScreen(); 
  146.         }else if (document.webkitExitFullscreen){ 
  147.          document.webkitExitFullscreen(); 
  148.        }else{ 
  149.         var docHtml  = document.documentElement; 
  150.         var docBody  = document.body; 
  151.         var videobox  = document.getElementById('videobox'); 
  152.         docHtml.style.cssText = ""; 
  153.         docBody.style.cssText = ""; 
  154.         videobox.style.cssText = ""; 
  155.         document.IsFullScreen = false; 
  156.     } 
  157.   } 
  158. document.getElementById('fullScreenBtn').addEventListener('click',function(){ 
  159.     launchFullscreen(document.getElementById('video'));  
  160.     window.setTimeout(function exit(){ 
  161. //檢查瀏覽器是否處於全屏 
  162. if(invokeFieldOrMethod(document,'FullScreen') || invokeFieldOrMethod(document,'IsFullScreen') || document.IsFullScreen) 
  163. { 
  164. exitFullscreen(); 
  165. } 
  166.    },5*1000); 
  167. },false); 
  168.   
  169. </script> 
  170. </body> 
  171.    
  172. </html> 

~~~~~~~~~~~~~~~~~~~~2014-11-30 更新,已修复的buglist如下~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  1. bug,之前写的Demo 不能做到很好的兼容 firefox全屏失败

FullScreenDeniedNotInputDriven=全屏请求被拒绝,因为 Element.mozRequestFullScreen()
 不是在一个短期运行的由用户引发的事件处理代码段中运行的。

  2.bug IE浏览器无法全屏,这里只让它放大了

  3.IE浏览器无法判断是否全屏

  4.之前忽略了 欧朋浏览器

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器