美文网首页
全屏事件

全屏事件

作者: cooqi | 来源:发表于2019-12-16 09:31 被阅读0次

注意
1.在< iframe >框架中使用全屏需要加 allowfullscreen 属性。 document.getElementById('iframe').setAttribute('allowFullScreen','')
2.全屏请求只能通过用户操作触发,否则会出现Failed to execute ‘requestFullscreen’ on ‘Element’: API can only be initiated by a user gesture.这样的警告,解决办法是将此方法绑定到某个用户操作事件上,例如点击事件 click 。

// 全屏
const MAZEY_FULL_SCREEN = function () {
    var prefixArr = ['', 'webkit', 'moz', 'ms'], // 浏览器前缀
        isRightRequest, // 是否找到适配的方法
        isRightExit,
        requestMethod, // 全屏方法
        exitMethod, // 退出全屏方法
        lowerFirst = function (str) {
            return str.slice(0, 1).toLowerCase() + str.slice(1);
        },
        requestSuffixArr = ['RequestFullscreen', 'RequestFullScreen'], // 后缀
        exitSuffixArr = ['ExitFullscreen', 'CancelFullScreen'],
        searchRightMethod = function (prefix, suffixArr, documentParent) {
            var methodArr = suffixArr.map(function(suffix) {
                return prefix + suffix;
        }),
            method,
                isRight;
            methodArr.forEach(function(wholePrefix) {
                if (isRight) return;
            if (prefix.length === 0) {
                wholePrefix = lowerFirst(wholePrefix)
            }
            if (wholePrefix in documentParent) {
                method = wholePrefix;
                isRight = true;
// console.log(method);
            }
        });
            return method;
        };
    prefixArr.forEach(function(prefix){
        if (isRightRequest && isRightExit) return;
    // 查找请求
        requestMethod = searchRightMethod(prefix, requestSuffixArr, document.documentElement);
        isRightRequest = Boolean(requestMethod);
    // 查找退出
        exitMethod = searchRightMethod(prefix, exitSuffixArr, document);
        isRightExit = Boolean(exitMethod);
    });
    this.request = function (element) {
        var domEle = document.querySelector(element) || document.documentElement;
        domEle[requestMethod]();
    };
    this.exit = function () {
        document[exitMethod]();
    };
};

var fullscreen = new MAZEY_FULL_SCREEN();
//定义一个变量进行判断,默认false 非全屏状态
var exitFullscreen = false
// 请求全屏
$(function () {
    $('#fullScreen').on('click', function () {
        if(exitFullscreen){
            fullscreen.exit();
            exitFullscreen=false;
            $(".screen-btn").removeClass('out-full').addClass('full-screen')//样式
        }else {
            fullscreen.request();
            exitFullscreen=true;
            $(".screen-btn").removeClass('full-screen').addClass('out-full')//样式
        }
    });
})

搬运自https://www.cnblogs.com/joyco773/p/9792170.html

相关文章

  • 元素全屏的设置与监听

    作者网站:http://hawkzz.com 设置全屏和退出全屏 监听全屏事件

  • JS 全屏和退出全屏

    进入全屏 退出全屏 获取当前全屏的节点 判断当前是否全屏 判断当前文档是否能切换到全屏 全屏事件 注:1.docu...

  • 全屏事件

    注意1.在< iframe >框架中使用全屏需要加 allowfullscreen 属性。 document.ge...

  • JS方法速查DOM

    1.常用DOM接口 2.判断当前位置是否为页面底部 3.全屏 1.进入全屏 退出全屏 全屏事件

  • 浏览器全屏

    在HTML5中,W3C制定了关于全屏的API但是只能由用户事件触发(可以是鼠标事件,键盘事件等),所以不能自动全屏...

  • 浏览器全屏

    先说一下,所谓全屏指的是用户手动触发点击事件使浏览器进入全屏或退出全屏,也可以按esc退出全屏,而按F11虽然也是...

  • JS全屏事件

    2018年1月29日 方案 监听 resize 事件,当width和height恰好等于屏幕的长宽时候,就认为是全...

  • js实现全屏和退出全屏功能

    主要是全屏和退出全屏事件,以及相应的操作(采用window.onresize监测) 补充:!和!!的区别! 变量转...

  • vue中实现浏览器全屏与退出全屏功能