iframe窗口全屏以及在layer弹出层犯的错

最近在做一个类似收银核销管理系统的项目,本来框架没什么问题,但是boss突然提出核销页面在操作时最好iframe窗口进入全屏模式。我第一思路是模拟发送F11请求,但是F11是整个页面进入全屏模式,并不是iframe窗口,故查阅网上资料发现有进入全屏模式的API——Fullscreen。调用requestFullscreen()可以进入全屏模式,和exitFullscreen()退出全屏模式。故代码如下:

Html代码:

<input id="enterFullScreen" type="button" value="进入全屏" οnclick="toFull()" />
<input id="exitFullScreen" type="button" value="退出全屏" οnclick="exitFull()" />

Js代码:

<script>
    function toFull() {
        var docElm = document.documentElement;
        //W3C
        if (docElm.requestFullscreen) {
            docElm.requestFullscreen();
        }
        //FireFox
        else if (docElm.mozRequestFullScreen) {
            docElm.mozRequestFullScreen();
        }
        //Chrome
        else if (docElm.webkitRequestFullScreen) {
            docElm.webkitRequestFullScreen();
        }
        //IE
        else if (elem.msRequestFullscreen) {
            elem.msRequestFullscreen();
        }
    }

    function exitFull() {
        if (document.exitFullscreen) {
            document.exitFullscreen();
        }
        else if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        }
        else if (document.webkitCancelFullScreen) {
            document.webkitCancelFullScreen();
        }
        else if (document.msExitFullscreen) {
            document.msExitFullscreen();
        }
    }

</script>

为解决浏览器的兼容性,故将各浏览器函数进行封装。

但是发现不起作用,查看浏览器控制台发现报警告:“请求全屏已拒绝,至少一个文档包含的元素不是一个 iframe,或没有"allowfullscreen"属性。”

原来iframe标签有个allowfullscreen属性来控制是否允许全屏,因此对iframe标签添加了allowfullscreen=true 效果如下:

但是突然发现,之前使用layer.confirm在这里因为全屏而被覆盖了而显示不出来,退出全屏后发现询问框出现了。仔细查看原因发现:之前为了方便对layer.confirm进行了封装,为了屏蔽其他iframe窗口(防止点击其他Iframe跳转)因此采用了parent.layer.confirm()。(这是整个页面弹出询问框)。改成layer.confirm()就OK啦。

第一篇blog,写的不好,还望包涵。

API接口文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/requestFullScreen

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值