HTML5 全屏显示兼容方案

首先来说,这个标题具有误导性,但这样设置改标题也是主要因为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如下~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

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

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

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

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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

uni app video、视频播放开发

视频播放有3种解决方案,使用HTML5的自带video、从HBuilder9.1.3起新增的plus.video的原生视频播放,以及使用Native.js。1.HTML5自带video标签,可以播放符合HTML5规范的视频格式。注意不含flv、ra等三方商业公司的规范格式。HTML5的video在Android上有较多浏览

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

移动端H5开发常用技巧总结

html篇常用的meta属性设置meta对于移动端的一些特殊属性,可根据需要自行设置<meta name"screenorientation" content"portrait" //Android 禁止屏幕旋转<meta name"fullscreen" content"yes"             //全屏显示

Html 常见标签,css基础样式,css的浮动和清流,浏览器的兼容

1.html模板<!DOCTYPEhtml<html<head<metacharset"UTF8"<title模板</title</head<body</body</html2.DOCTYPE声明放在html文件头部最新HTML5用<!DOCTYPEhtml