// 转自: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. [Contest20171028]火神的鱼

    火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼.池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形.池塘里的鱼不停地在水中游动,可以看成一些点.有的时候会有鱼游进渔网,有的时 ...

  2. 【最短路】【spfa】CODEVS 2645 Spore

    spfa最短路+判负权回路(是否某个点入队超过n次). #include<cstdio> #include<queue> #include<cstring> usi ...

  3. 【费用流】BZOJ1061[NOI2008]-志愿者招募

    [题目大意] 一个项目需要n天完成,其中第i天至少需要Ai个人.共有m类人可以招募,其中第i类可以从第Si天做到第Ti天,每人的招募费用为Ci元.求最小招募费用. [思路] byvoid神犇的建图详解 ...

  4. 利用Cain+wireshark进行协议分析

    Cain抓包指南 1.简介: 在开发测试工作中经常有捕抓设备间通信报文的需求,但有时候被抓包的设备并不直接和进行抓包的主机或设备进行通信,因此会达不到想要的效果.解决该问题的常见方法有: (1).为被 ...

  5. SQL Server Wait Types Library

    https://www.sqlskills.com/blogs/paul/announcing-the-comprehensive-sql-server-wait-types-and-latch-cl ...

  6. SQLSERVER WINDBG调试:mssqlwiki.com

    https://mssqlwiki.com/2012/10/16/sql-server-exception_access_violation-and-sql-server-assertion/ SQL ...

  7. Redis核心解读

    http://www.wzxue.com/redis核心解读/

  8. Linq 简明教程

    一个简单的实例 static void Main(string[] args) { string[] names = { "Alonso", "Zheng", ...

  9. shell产生随机数七种方法

    shell实例浅谈之三产生随机数七种方法   一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数).伪随机数在大 ...

  10. Install FileZilla in Ubuntu16.04

    一.安装fileZilla $ sudo add-apt-repository ppa:n-muench/programs-ppa $ sudo apt-get update $ sudo apt-g ...