js 全屏事件 参考三


一、经过一些自测

chrome,html中的video元素点击自带的全屏按钮,

触发不了mdn所说的 fullscreenchange事件,准确来说是触发了事件,但是类型字符串需要加上前缀 webkitfullscreenchange 

// 触发不了  fullscreenchange 
document.getElementById('videoEle').onfullscreenchange = function ( event ) { console.log("FULL SCREEN CHANGE",event,document.fullscreenElement) };

// 绑定
webkitfullscreenchange 可以触发
使用 document 或者 document.getElementById('videoEle') 绑定都可以
document.getElementById('videoEle').addEventListener('webkitfullscreenchange', (event) => {

        if (document.fullscreenElement) {
           console.log(`进入全屏`);
        } else {
           console.log('离开全屏');
        }
  });

二、手动执行浏览器的全屏方法则video元素可以触发 fullscreenchange事件

function btnClick(e){

     console.log('btnClick event is',event)
     let element = e.target
     element = document.getElementById('videoEle')
     //element = document.getElementById('test')  div元素或者button元素或其他html元素
    // element  = document.documentElement      document文档元素
     if(element.requestFullscreen){
         element.requestFullscreen()
     }else if(element.mozRequestFullScreen){
         element.mozRequestFullScreen()
     }else if (element.msRequestFullscreen) {
        element.msRequestFullscreen()
     } else if (element.webkitRequestFullscreen) {
        element.webkitRequestFullScreen()

     }
}

顺便补充一下,取消全屏的方法

// 退出 fullscreen
function exitFullscreen() {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.mozExitFullScreen) {
document.mozExitFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}

三、触发事件后判断是否全屏,除了使用   document.fullscreenElement

        还可以使用    document.fullScreen 

$(document).bind('webkitfullscreenchange mozfullscreenchange fullscreenchange',function(e){
    console.log('全屏事件event is',e)

var isFullScreen = document.fullScreen || 
                   document.mozFullScreen || 
                   document.webkitIsFullScreen ||
                   document.fullscreenElement;
    if(isFullScreen){
      console.log('Go to Full Screen mode');
    }else{
       console.log('Exit Full Screen mode');
    }
});

四、

mdn参考链接:

 https://developer.mozilla.org/en-US/docs/Web/API/Document/fullscreenElement

博客参考链接 

fullscreenchange全屏事件监听,兼容chrome、safari

https://blog.csdn.net/zqian1994/article/details/105814522 

Fullscreen API 全屏显示网页

https://blog.csdn.net/c14210220635c/article/details/71601243

  ['fullscreenchange','webkitfullscreenchange','mozfullscreenchange'].forEach((item,index) => {
          window.addEventListener(item, () => this.fullscreenchange());
        })
————————————————

    //  监听全屏事件触发
      fullscreenchange() {
        let isFullScreen = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
        if (isFullScreen) {
          //  进入全屏
        } else {
          //  退出全屏
          
        }
      },
————————————————
版权声明:本文为CSDN博主「zqian1994」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zqian1994/article/details/105814522

五、如某些博客的总结

https://www.cnblogs.com/lfqcode/p/6164001.html

Fullscreen 属性与事件

一个坏消息,到目前为止,全屏事件和方法依然是带前缀的,好消息就是很快主流浏览器就会都支持。

1.document.fullscreenElement:  当前处于全屏状态的元素 element.
2.document.fullscreenEnabled:  标记 fullscreen 当前是否可用.

当进入/退出 全屏模式时,会触发 fullscreenchange 事件:

var fullscreenElement =
document.fullscreenEnabled
|| document.mozFullscreenElement
|| document.webkitFullscreenElement;
var fullscreenEnabled =
document.fullscreenEnabled
|| document.mozFullscreenEnabled
|| document.webkitFullscreenEnabled;

Fullscreen CSS

浏览器提供了一些有用的 fullscreen CSS 控制规则:

/* html */
:-webkit-full-screen {
/* properties */
}
:-moz-fullscreen {
/* properties */
}


:fullscreen {
/* properties */
}


/* deeper elements */
:-webkit-full-screen video {
width: 100%;
height: 100%;
}


/* styling the backdrop */
::backdrop {
/* properties */
}