首先来说,这个标题具有误导性,但这样设置改标题也是主要因为video使用的比较多
在html5中,全屏方法可以适用于很多html标签元素,不仅仅是video
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 16body div.videobox{ 17 width: 400px; 18 height: 320px; 19 margin: 100px auto; 20 background-color:#000; 21} 22 23body div.videobox video.video 24{ 25width: 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="https://my.oschina.net//ososchina/blog/349660/movie.ogg" type="video/ogg" /> 70 <source src="https://my.oschina.net//ososchina/blog/349660/movie.mp4" type="video/mp4" /> 71 <source src="https://my.oschina.net//ososchina/blog/349660/movie.webm" type="video/webm" /> 72 <object data="./movie.mp4" width="100%" height="100%"> 73 <embed width="100%" height="100%" src="https://my.oschina.net//ososchina/blog/349660/movie.swf" /> 74 </object> 75 76 </video> 77 <button id="fullScreenBtn">全屏</button> 78</div> 79 80 81<script type="text/javascript"> 82 83//反射調用 84var 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 method = 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 } 158document.getElementById('fullScreenBtn').addEventListener('click',function(){ 159 launchFullscreen(document.getElementById('video')); 160 window.setTimeout(function exit(){ 161//檢查瀏覽器是否處於全屏 162if(invokeFieldOrMethod(document,'FullScreen') || invokeFieldOrMethod(document,'IsFullScreen') || document.IsFullScreen) 163{ 164exitFullscreen(); 165} 166 },5*1000); 167},false); 168 169</script> 170</body> 171 172</html>

~~~~~~~~~~~~~~~~~~~~2014-11-30 更新,已修复的buglist如下~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
bug,之前写的Demo 不能做到很好的兼容 firefox全屏失败
FullScreenDeniedNotInputDriven=全屏请求被拒绝,因为 Element.mozRequestFullScreen() 不是在一个短期运行的由用户引发的事件处理代码段中运行的。
2.bug IE浏览器无法全屏,这里只让它放大了
3.IE浏览器无法判断是否全屏
4.之前忽略了 欧朋浏览器