• 全屏事件问题处理


    先上代码

    window.isflsgrn = false;//ie11以下是否进入全屏标志,true为全屏状态,false为非全屏状态
                window.ieIsfSceen = false;//ie11是否进入全屏标志,true为全屏状态,false为非全屏状态
                //跨浏览器返回当前 document 是否进入了可以请求全屏模式的状态
                function fullscreenEnable(){
                    var isFullscreen = document.fullscreenEnabled ||
                    window.fullScreen ||
                    document.mozFullscreenEnabled ||
                    document.webkitIsFullScreen;
                    return isFullscreen;
                }
                //全屏
                var fScreen = function(){
                    var docElm = document.documentElement;
                    if (docElm.requestFullscreen) {
                        docElm.requestFullscreen();
                    }
                    else if (docElm.msRequestFullscreen) {
                        docElm.msRequestFullscreen();
                        ieIsfSceen = true;
                    }
                    else if (docElm.mozRequestFullScreen) {
                        docElm.mozRequestFullScreen();
                    }
                    else if (docElm.webkitRequestFullScreen) {
                        docElm.webkitRequestFullScreen();
                    }else {//对不支持全屏API浏览器的处理,隐藏不需要显示的元素
                        window.parent.hideTopBottom();
                        isflsgrn = true;
                        $("#fsbutton").text("退出全屏");
                    }
                }
                //退出全屏
                var cfScreen = function(){
                    if (document.exitFullscreen) {
                        document.exitFullscreen();
                    }
                    else if (document.msExitFullscreen) {
                        document.msExitFullscreen();
                    }
                    else if (document.mozCancelFullScreen) {
                        document.mozCancelFullScreen();
                    }
                    else if (document.webkitCancelFullScreen) {
                        document.webkitCancelFullScreen();
                    }else {
                        window.parent.showTopBottom();
                        isflsgrn = false;
                        $("#fsbutton").text("全屏");
                    }
                }
                //全屏按钮点击事件
                $("#fsbutton").click(function(){
                    var isfScreen = fullscreenEnable();
                    if(!isfScreen && isflsgrn == false){
                        if (ieIsfSceen == true) {
                            document.msExitFullscreen();
                            ieIsfSceen = false;
                            return;
                        }
                        fScreen();
                    }else{
                        cfScreen();
                    }
                })
                //键盘操作
                $(document).keydown(function (event) {
                    if(event.keyCode == 27 && ieIsfSceen == true){
                        ieIsfSceen = false;
                    }
                });
                //监听状态变化
                if (window.addEventListener) {
                    document.addEventListener('fullscreenchange', function(){ 
                        if($("#fsbutton").text() == "全屏"){
                            $("#fsbutton").text("退出全屏"); 
                        }else{
                            $("#fsbutton").text("全屏");
                        }
                    });
                    document.addEventListener('webkitfullscreenchange', function(){ 
                        if($("#fsbutton").text() == "全屏"){
                            $("#fsbutton").text("退出全屏"); 
                        }else{
                            $("#fsbutton").text("全屏");
                        }
                    });
                    document.addEventListener('mozfullscreenchange', function(){ 
                        if($("#fsbutton").text() == "全屏"){
                            $("#fsbutton").text("退出全屏"); 
                        }else{
                            $("#fsbutton").text("全屏");
                        }
                    });
                    document.addEventListener('MSFullscreenChange', function(){ 
                        if($("#fsbutton").text() == "全屏"){
                            $("#fsbutton").text("退出全屏"); 
                        }else{
                            $("#fsbutton").text("全屏");
                        }
                    });
                }

    值得注意的是 fullscreenEnabled 参数,网上的说法不一,有的说是监控浏览器是否进入了可以请求全屏模式的状态,有的说只是一个判断浏览器是否支持全屏的标志,实际使用时也确实出现了问题,IE11不能识别这个属性,需要自己单独设置一个标记来控制IE11当前是否为全屏状态。

    本文为作者原创,转载请注明出处。

    前端交流群,群文件提供大量文档、书籍和资料。期待你的加入!群号:127768464

    前端交流群,群文件提供大量文档、书籍和资料。期待你的加入!群号:127768464

  • 相关阅读:
    【Java】推断文件的后缀名
    UVa 131
    Java开发手冊 Java学习手冊教程(MtJava开发手冊)
    《Java并发编程实战》第十五章 原子变量与非堵塞同步机制 读书笔记
    OC语言--NSFileManager& NSFileHandle
    为什么我刚发表的文章变成了“待审核”,csdn有没有官方解释啊
    mac os升级为 Yosemite 10.10 后不能创建javaproject
    【spring】在spring cloud项目中使用@ControllerAdvice做自定义异常拦截,无效 解决原因
    【mybatis】mybatis动态order by 的问题, 注意 只需要把#{} 改成 ${} 即可
    【spring cloud】一个ms微服务想要给注册中心eureka发现,需要满足这些条件,微服务不能被eureka注册中心发现的解决方案
  • 原文地址:https://www.cnblogs.com/sysg/p/7233115.html
Copyright © 2020-2023  润新知