弹出iframe内嵌页面元素到父页面并全屏化
2018-06-24 00:50:06来源:未知 阅读 ()
(注册博客好久了,一直没舍得添砖加瓦,主要是每次想写点东西的时候,随便搜一搜发现都比我总结的都要好,甚感尴尬,但是总是要开始的,所以这就是我的第一篇博客,也绝不会是最后一篇,废话不多说,直接入正题)
iframe和弹窗这些词对于js高手来说都是耳熟能详的东西,作为一个新人来说,还在学习阶段的我就在工作中遇到这么一个奇葩的需求,要在引入的iframe页面里做一个全屏化的功能.
粗略一看,这还不容易,模拟下F11的功能键什么的,于是网上一搜还真有一大堆关于全屏化的案例,遂借来用之.
然后高高兴兴的拿一个没有iframe引入的页面做了个测试页面查看全屏化功能效果,代码如下(fullScreenPage.html):
1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <title>Control Tower</title> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 </head> 7 <body style="margin: 0px;height: 100%;width: 100%;"> 8 <div id="buttonPanel" style="position: absolute;left: 25%;z-index:100"> 9 <input id="full_screen_open" type="button" value="打开全屏"> 10 <input id="full_screen_close" type="button" value="退出全屏" style="display: none"> 11 </div> 12 <div id="container" style="display:table;height: 50%;width: 50%;background-color: #004981;position:absolute;left: 25%;"> 13 <div style="display:table-cell;height: 50%;width: 50%;text-align: center;vertical-align: middle;border: 2px solid #DDDDDD;"> 14 <font id="font" size="30"></font> 15 </div> 16 </div> 17 </body> 18 <script src="./scripts/jquery/jquery-1.11.3.js" type="text/javascript"></script> 19 <script type="text/javascript"> 20 $("#full_screen_open").on("click",function(){ 21 requestFullScreen($("#container")['0']); 22 $("#font").empty(); 23 $("#font").text("已打开全屏化"); 24 }); 25 var requestFullScreen = function(element) { 26 var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen; 27 if (requestMethod) { 28 requestMethod.call(element); 29 } else if (typeof window.ActiveXObject !== "undefined") { 30 var wscript = new ActiveXObject("WScript.Shell"); 31 if (wscript !== null) { 32 wscript.SendKeys("{F11}"); 33 } 34 } 35 } 36 </script> 37 </html>
嗯,我自己觉得这个效果真的是不要太棒了,还做了浏览器兼容(FireFox=mozRequestFullScreen;W3C=requestFullscreen;Chrome等=webkitRequestFullScreen;ie11=msRequestFullscreen).....
于是,我立马放到项目里,结果是什么样子呢?执行下面的代码(parentPage.html)就知道了....
1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <title>Control Tower</title> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 </head> 7 <body style="margin: 0px;height: 100%;width: 100%;"> 8 <div id="parentContainer" style="height: 75%;width: 75%;position:absolute;left: 12.5%;border: 2px solid red;"> 9 <!-- 蓝色边框以内的内容是引入的iframe页面内容,也是需要做全屏化功能的页面 --> 10 <iframe src="fullScreenPage.html" style="border: 2px solid blue;height: 100%;width: 100%;"></iframe> 11 </div> 12 </body> 13 </html>
哦豁,好像没生效,那么为什么呢?
很明显没有起作用,那么怎么办呢?既然引入的子页面iframe不生效,是不是从父页面或许就可以了?
那就赶紧试试找到父类并执行全屏功能,把页面(fullScreenPage.html)改一改,代码如下:
1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <title>Control Tower</title> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 </head> 7 <body style="margin: 0px;height: 100%;width: 100%;"> 8 <div id="buttonPanel" style="position: absolute;left: 25%;z-index:100"> 9 <input id="full_screen_open" type="button" value="打开全屏"> 10 <input id="full_screen_close" type="button" value="退出全屏" style="display: none"> 11 </div> 12 <div id="container" style="display:table;height: 50%;width: 50%;background-color: #004981;position:absolute;left: 25%;"> 13 <div style="display:table-cell;height: 50%;width: 50%;text-align: center;vertical-align: middle;border: 2px solid #DDDDDD;"> 14 <font id="font" size="30"></font> 15 </div> 16 </div> 17 </body> 18 <script src="./scripts/jquery/jquery-1.11.3.js" type="text/javascript"></script> 19 <script type="text/javascript"> 20 $("#full_screen_open").on("click",function(){ 21 /* 获取父类的document */ 22 var parentDoc = parent.document; 23 /* 定义一个接收元素的变量 */ 24 var thisIframe = null; 25 /* 用jQuery遍历父类的所有iframe,找到我引入的那个iframe, 26 假设我不知道是哪个页面要引入我的iframe,但是引入我的iframe的src肯定会有引入这个页面的名字, 27 所以通过这个去检索,一定能找到引入这个页面的iframe,然后把这个iframe的元素全屏化也就是把原来的页面全屏化 */ 28 $("iframe",window.parent.document).each(function(index,e){ 29 if (e.src.indexOf("fullScreenPage.html") > 0) { 30 thisIframe = e; 31 return false; 32 } 33 }); 34 requestFullScreen(thisIframe); 35 $("#font").empty(); 36 $("#font").text("已打开全屏化"); 37 }); 38 var requestFullScreen = function(element) { 39 var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen; 40 if (requestMethod) { 41 requestMethod.call(element); 42 } else if (typeof window.ActiveXObject !== "undefined") { 43 var wscript = new ActiveXObject("WScript.Shell"); 44 if (wscript !== null) { 45 wscript.SendKeys("{F11}"); 46 } 47 } 48 } 49 </script> 50 </html>
哈哈,改了之后发现果然可以了,问题解决。
jQuery还请自行下载并导入引用,我这里就不细说了.
这里分享一个jQuery下载的地址:jquery下载所有版本(实时更新)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Bootstrap4 轮播+模态框+提示框+弹出框 2020-04-16
- html框架iframe与frameset的介绍 2020-03-30
- iframe在iphone手机上的问题 2020-01-20
- Iframe 高度自适应,js控制Iframe 高度自适应 2019-12-31
- iframe子元素无法全屏 2019-11-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash