Browse Source

Merge pull request #175 from kn007/patch-1

fix fullscreen switch logic
DIYgod 7 years ago
parent
commit
0cae80ba24
1 changed files with 12 additions and 12 deletions
  1. 12 12
      src/fullscreen.js

+ 12 - 12
src/fullscreen.js

@@ -9,6 +9,7 @@ class FullScreen {
         });
         });
         this.player.events.on('webfullscreen_cancel', () => {
         this.player.events.on('webfullscreen_cancel', () => {
             this.player.resize();
             this.player.resize();
+            utils.setScrollPosition(this.lastScrollPosition);
         });
         });
 
 
         const fullscreenchange = () => {
         const fullscreenchange = () => {
@@ -17,6 +18,7 @@ class FullScreen {
                 this.player.events.trigger('fullscreen');
                 this.player.events.trigger('fullscreen');
             }
             }
             else {
             else {
+                utils.setScrollPosition(this.lastScrollPosition);
                 this.player.events.trigger('fullscreen_cancel');
                 this.player.events.trigger('fullscreen_cancel');
             }
             }
         };
         };
@@ -35,6 +37,12 @@ class FullScreen {
     }
     }
 
 
     request (type = 'browser') {
     request (type = 'browser') {
+        const anotherType = type === 'browser' ? 'web' : 'browser';
+        const anotherTypeOn = this.isFullScreen(anotherType);
+        if (!anotherTypeOn) {
+            this.lastScrollPosition = utils.getScrollPosition();
+        }
+
         switch (type) {
         switch (type) {
         case 'browser':
         case 'browser':
             if (this.player.container.requestFullscreen) {
             if (this.player.container.requestFullscreen) {
@@ -52,14 +60,14 @@ class FullScreen {
             break;
             break;
         case 'web':
         case 'web':
             this.player.container.classList.add('dplayer-fulled');
             this.player.container.classList.add('dplayer-fulled');
-
-            // record last position then hide scrollbars
-            this.lastScrollPosition = utils.getScrollPosition();
             document.body.classList.add('dplayer-web-fullscreen-fix');
             document.body.classList.add('dplayer-web-fullscreen-fix');
-
             this.player.events.trigger('webfullscreen');
             this.player.events.trigger('webfullscreen');
             break;
             break;
         }
         }
+
+        if (anotherTypeOn) {
+            this.cancel(anotherType);
+        }
     }
     }
 
 
     cancel (type = 'browser') {
     cancel (type = 'browser') {
@@ -77,11 +85,7 @@ class FullScreen {
             break;
             break;
         case 'web':
         case 'web':
             this.player.container.classList.remove('dplayer-fulled');
             this.player.container.classList.remove('dplayer-fulled');
-
-            // restore scrollbars and last position
             document.body.classList.remove('dplayer-web-fullscreen-fix');
             document.body.classList.remove('dplayer-web-fullscreen-fix');
-            utils.setScrollPosition(this.lastScrollPosition);
-
             this.player.events.trigger('webfullscreen_cancel');
             this.player.events.trigger('webfullscreen_cancel');
             break;
             break;
         }
         }
@@ -93,10 +97,6 @@ class FullScreen {
         }
         }
         else {
         else {
             this.request(type);
             this.request(type);
-            const anotherType = type === 'browser' ? 'web' : 'browser';
-            if (this.isFullScreen(anotherType)) {
-                this.cancel(anotherType);
-            }
         }
         }
     }
     }
 }
 }