ソースを参照

update fullscreen

vian 4 年 前
コミット
2342784e18
2 ファイル変更36 行追加7 行削除
  1. 31 5
      public/common_util.js
  2. 5 2
      public/web/syntax-detection.js

+ 31 - 5
public/common_util.js

@@ -96,12 +96,38 @@ function deleteEmptyObject(arr) {
     // 通过F11打开全屏后,没有办法通过代码退出全屏,只能通过F11退出:
     // https://stackoverflow.com/questions/51114885/combining-requestfullscreen-and-f11; https://stackoverflow.com/questions/43392583/fullscreen-api-not-working-if-triggered-with-f11/44368592#44368592;
     function handleFullscreen() {
-        const isFullscreen = window.innerHeight === window.screen.height;
-        if (isFullscreen) {
-            const p = document.exitFullscreen();
-            p.catch(() => alert('按F11即可退出全屏模式'));
+        if (isFullscreen()) {
+            const p = exitFullscreen();
+            if (Object.prototype.toString.call(p) === '[object Promise]') {
+                p.catch(() => alert('按F11即可退出全屏模式'));
+            }
         } else {
-            document.documentElement.requestFullscreen();
+            fullscreen(document.documentElement);
+        }
+    }
+    function isFullscreen() {
+        return window.innerHeight === window.screen.height;
+    }
+    function fullscreen(ele) {
+        if (ele.requestFullscreen) {
+            ele.requestFullscreen();
+        } else if (ele.mozRequestFullscreen) {
+            ele.mozRequestFullScreen();
+        } else if (ele.webkitRequestFullscreen) {
+            ele.webkitRequestFullscreen();
+        } else if (ele.msRequestFullscreen) {
+            ele.msRequestFullscreen();
+        }
+    }
+    function exitFullscreen() {
+        if(document.exitFullscreen) {
+            return document.exitFullscreen();
+        } else if(document.mozCancelFullscreen) {
+            return document.mozCancelFullscreen();
+        } else if(document.webkitExitFullscreen) {
+            return document.webkitExitFullscreen();
+        } else if(document.msExitFullscreen) {
+            return document.msExitFullscreen();
         }
     }
 

+ 5 - 2
public/web/syntax-detection.js

@@ -151,8 +151,11 @@ function checkSyntax() {
         }
 
         // DOM
-        if (typeof document.documentElement.requestFullscreen !== 'function') {
-            throw new TypeError('document.documentElement.requestFullscreen is not a function');
+        if (typeof document.documentElement.requestFullscreen !== 'function' && 
+            typeof document.documentElement.mozRequestFullscreen !== 'function' &&
+            typeof document.documentElement.webkitRequestFullscreen !== 'function' &&
+            typeof document.documentElement.msRequestFullscreen !== 'function') {
+            throw new TypeError('fullscreen is not a function');
         }
 
     } catch (err) {