Update fullscreen.js

add Fullscreen support for IE and fix fullscreen event bug for Firefox
This commit is contained in:
A-Circle Zhang 2018-08-13 15:21:44 +08:00 committed by GitHub
parent e9419c7ebb
commit 001b61da6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 37 additions and 4 deletions

View File

@ -22,15 +22,33 @@ class FullScreen {
this.player.events.trigger('fullscreen_cancel');
}
};
this.player.container.addEventListener('fullscreenchange', fullscreenchange);
this.player.container.addEventListener('mozfullscreenchange', fullscreenchange);
this.player.container.addEventListener('webkitfullscreenchange', fullscreenchange);
const docfullscreenchange = () => {
let fullEle = document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;
if(fullEle && fullEle !== this.player.container){
return;
}
if(fullEle){
this.player.events.trigger('fullscreen');
} else {
utils.setScrollPosition(this.lastScrollPosition);
this.player.events.trigger('fullscreen_cancel');
}
}
if(/Firefox/.test(navigator.userAgent)){
document.addEventListener('mozfullscreenchange', docfullscreenchange);
document.addEventListener('fullscreenchange', docfullscreenchange);
} else {
this.player.container.addEventListener('fullscreenchange', fullscreenchange);
this.player.container.addEventListener('webkitfullscreenchange', fullscreenchange);
document.addEventListener('msfullscreenchange', docfullscreenchange);
document.addEventListener('MSFullscreenChange', docfullscreenchange);
}
}
isFullScreen (type = 'browser') {
switch (type) {
case 'browser':
return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;
case 'web':
return this.player.container.classList.contains('dplayer-fulled');
}
@ -57,6 +75,12 @@ class FullScreen {
else if (this.player.video.webkitEnterFullscreen) { // Safari for iOS
this.player.video.webkitEnterFullscreen();
}
else if (this.player.video.webkitEnterFullScreen) {
this.player.video.webkitEnterFullScreen();
}
else if (this.player.container.msRequestFullscreen) {
this.player.container.msRequestFullscreen();
}
break;
case 'web':
this.player.container.classList.add('dplayer-fulled');
@ -82,6 +106,15 @@ class FullScreen {
else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
else if (document.webkitCancelFullscreen) {
document.webkitCancelFullscreen();
}
else if (document.msCancelFullScreen) {
document.msCancelFullScreen();
}
else if (document.msExitFullscreen){
document.msExitFullscreen();
}
break;
case 'web':
this.player.container.classList.remove('dplayer-fulled');