// 转自:https://my.oschina.net/jackyrong/blog/114086
 
HTML 5中的full screen,目前可以在除IE和opera外的浏览器中使用 ,有的时候用来做  
全屏API,游戏呀,等都很有用。先看常见的API

1 element.requestFullScreen()

作用:请求某个元素element全屏

2  
Document.getElementById(“myCanvas”).requestFullScreen()

这里是将其中的元素ID去请求fullscreen

3  
退出全屏  
  document.cancelFullScreen()

4  
Document.fullScreen

如果用户在全屏模式下,则返回true  
5 document.fullScreenElement  
  返回当前处于全屏模式下的元素

下面的代码是开启全屏模式:

Java代码    
  1. function fullScreen(element) {
  2. if(element.requestFullScreen) {
  3. element.requestFullScreen();
  4. } else if(element.webkitRequestFullScreen ) {
  5. element.webkitRequestFullScreen();
  6. } else if(element.mozRequestFullScreen) {
  7. element.mozRequestFullScreen();
  8. }
  9. }

下面的代码就是整个页面调用全屏模式  
  var html = document.documentElement;  
fullScreen(html);  
   下面的则是对指定元素,比如  
  var canvas = document.getElementById('mycanvas');  
fullScreen(canvas);  
   如果要取消,同样:

代码    
  1. // the helper function
  2. function fullScreenCancel() {
  3. if(document.requestFullScreen) {
  4. document.requestFullScreen();
  5. } else if(document .webkitRequestFullScreen ) {
  6. document.webkitRequestFullScreen();
  7. } else if(document .mozRequestFullScreen) {
  8. document.mozRequestFullScreen();
  9. }
  10. }
  11. fullScreenCancel();

不过老实说,FULL SCREEN有个问题,容易造成欺骗,比如在  
http://feross.org/html5-fullscreen-api-attack/中,其中就有一个很好的DEMO,  
去欺骗了,比如某个链结写的是http://www.bankofamerica.com,大家以为是美国银行,  
一点进去,因为使用了全屏幕API,就会欺骗到人

代码    
  1. $('html').on('click keypress', 'a', function(event) {
  2. // 不响应真正的A HREF点击事件
  3. event.preventDefault();
  4. event.stopPropagation();
  5. // Trigger fullscreen
  6. if (elementPrototype.requestFullscreen) {
  7. document.documentElement.requestFullscreen();
  8. } else if (elementPrototype.webkitRequestFullScreen) {
  9. document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
  10. } else if (elementPrototype.mozRequestFullScreen) {
  11. document.documentElement.mozRequestFullScreen();
  12. } else {
  13. //
  14. }
  15. //显示假的UI
  16. $('#menu, #browser').show();
  17. $('#target-site').show();
  18. });

详细代码在https://github.com/feross/fullscreen-api-attack可以下载  
老外也提到了:  
   Browser vendors are well aware of the potential security issues with fullscreen. For example, a malicious site could show a full screen Windows or Mac login window and steal a password. That’s why they are disabling keyboard support by default and only enabling by explicitly asking. — John Dyer 

 

HTML5 中fullscreen 中的几个API和fullscreen欺骗的更多相关文章

  1. HTML5中与页面显示相关的API

    1.HTML5中与页面显示相关的API 在HTML5中,增加了几个与页面显示相关的API,其中一个是Page Visibility API Page Visibility API  是指当页面变为最小 ...

  2. HTML5移动开发中的meta与link

    meta HTML5移动开发中的一些webkit专属头部标签,能够帮助浏览器更好的解析HTML代码,从而为HTML5移动开发提供更好的前端表现与体验 viewport网页缩放 1 <meta n ...

  3. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  4. HTML5在canvas中绘制复杂形状附效果截图

    HTML5在canvas中绘制复杂形状附效果截图 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath() : 开始绘制一个新路 ...

  5. html5 webDatabase 存储中sql语句执行可嵌套使用

    html5 webDatabase 存储中sql语句执行可嵌套使用,代码如下: *); data.transaction(function(tx){ tx.executeSql("creat ...

  6. 你所不知道的html5与html中的那些事第三篇

    文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作 ...

  7. HTML5移动开发中的input输入框类型

    HTML5规范引入了许多新的input输入框类型 在HTML5移动开发中,通过这些新的输入框类型来显示定制后的键盘布局,用户体验更好,更容易填写各种表单 本文中,实测手机为肾4S与米4 数字类型num ...

  8. docker中运行ASP.NET Core Web API

    在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...

  9. 在基于TypeScript的LayaAir HTML5游戏开发中使用AMD

    在基于TypeScript的LayaAir HTML5游戏开发中使用AMD AMD AMD是"Asynchronous Module Definition"的缩写,意思就是&quo ...

  10. 借助AMD来解决HTML5游戏开发中的痛点

    借助AMD来解决HTML5游戏开发中的痛点 游戏开发的痛点 现在,基于国内流行引擎(LayaAir和Egret)和TypeScript的HTML5游戏开发有诸多痛点: 未采用TypeScript编译器 ...

随机推荐

  1. 工作流Activiti新手入门学习路线整理

    写在前面: 最近项目中使用到了工作流,虽然此部分不是自己需要完成的,但是也涉及到了要调用写的接口.正好有时间,就了解下,以便之后能在其他项目中用到时,不至于什么都不知道什么都不了解. 这里就主要整理下 ...

  2. hadoop map(分片)数量确定

    之前学习hadoop的时候,一直希望可以调试hadoop源码,可是一直没找到有效的方法,今天在调试矩阵乘法的时候发现了调试的方法,所以在这里记录下来. 1)事情的起因是想在一个Job里设置map的数量 ...

  3. golang设计模式-成员变量赋值

    常见golang的struct赋值有两种: 1)定义变量同时初始化 val := &Options{ UID:int(1), } 2)先定义变量,再赋值 val := new(Options) ...

  4. Jackson使用ObjectManage#readValue传入泛型T的问题

    说明:没找到合适的方法,持续关注这个问题 参考: https://stackoverflow.com/questions/11664894/jackson-deserialize-using-gene ...

  5. .NET反编译

    http://www.cnblogs.com/powertoolsteam/archive/2011/01/05/1926066.html

  6. oracle审计AUD$过大导致的数据库登录异常

      今天,省分技术人员反映数据库登录异常. 查询oerr,发现该错误是一般性提示,可能导致的原因有数据库未注册.本地文件配置问题等.由于平时连接并没有问题,是突发情况,所以排除了配置问题. 远程登录查 ...

  7. 排查java.lang.OutOfMemoryError: GC overhead limit exceeded

    帮助客户排查java.lang.OutOfMemoryError: GC overhead limit exceeded错误记录: 具体网址: https://support.oracle.com/e ...

  8. 后台SQL注入实例

    简要描述: 汉庭连锁酒店后台SQL注入,可绕过登陆限制进入后台,可脱库. 详细说明: 问题发生在这个站点.http://miaosha.htinns.com/ 标题内没有写具体信息.因为怕发布后被人入 ...

  9. javascript快速入门13--BOM——浏览器对象模型(Browser Object Model)

    什么是BOM? BOM是Browser Object Model的缩写,简称浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对 ...

  10. Android架构分析之Android消息处理机制(一)

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本号:4.4.2 在这个系列文章中我们将来分析Android消息处理机制. 本文介绍了一个使用Han ...