全屏问题(F11和H5全屏)

2 篇文章 0 订阅

首先全屏分F11全屏:原理只是隐藏了地址栏,h5全屏:是让DOM元素全屏,例如可以让图片啦,div等,全屏后只能看到该DOM元素。

其次浏览器可能为了防止有人恶意全屏,所以全屏时监听不到F11。

解决问题思路:当一件事由两个不同的条件控制时,让一个条件去取代另一个条件。

fullscreenchange//用来监听全屏切换,但是监听不到F11,因为F11只是隐藏了地址栏

react代码:

function fullscreenchange(el, callback) {//用来监听全屏切换,但是监听不到F11,因为F11只是隐藏了地址栏
    el.addEventListener("fullscreenchange", function () {
        callback && callback(document.fullscreen);
    });
    el.addEventListener("webkitfullscreenchange", function () {
        callback && callback(document.webkitIsFullScreen);
    });
    el.addEventListener("mozfullscreenchange", function () {
        callback && callback(document.mozFullScreen);
    });
    el.addEventListener("msfullscreenchange", function () {
        callback && callback(document.msFullscreenElement);
    });
}
componentDidMount() {
    var that=this;
    // this.getCurrentPointHandler();
    this.getCurrentPoint();
    this.getDemoId();
    // this.getStayPoints()
    fullscreenchange(document, function(isFull) {
        that.setState({isFullScreen: isFull})
    });
    document.onkeydown = (event) => { //监听整个键盘的onkeydown事件
        if ( event.keyCode == 122) {
            event.preventDefault(); //阻止浏览器的默认行为
            this.handleRequestFullScreen(); //调用H5的api
        }
    };
}
handleRequestFullScreen = () => {
    const {isFullScreen} = this.state;
    const element = document.documentElement;
    if (isFullScreen) {
        if (document.exitFullscreen) {
            document.exitFullscreen();
        } else if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        } else if (document.webkitExitFullscreen) {
            document.webkitExitFullscreen();
        }
        this.setState({isFullScreen: false})
    } else {
        if (element.requestFullscreen) {
            element.requestFullscreen();
        } else if (element.mozRequestFullScreen) {
            element.mozRequestFullScreen();
        } else if (element.webkitRequestFullscreen) {
            element.webkitRequestFullscreen();
        } else if (element.msRequestFullscreen) {
            element.msRequestFullscreen();
        }
        this.setState({isFullScreen: true})
    }
};

vue:

mounted() {
    fullscreenchange(document, function(isFull) {
        that.isFullScreen=isFull;
    });
    document.onkeydown = (event) => { //监听整个键盘的onkeydown事件
        if ( event.keyCode == 122) {
            event.preventDefault(); //阻止浏览器的默认行为
            this.handleRequestFullScreen(); //调用H5的api
        }
    };
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值