Преглед на файлове

fix: 兼容全屏失败

bill преди 2 години
родител
ревизия
c27093bd12
променени са 1 файла, в които са добавени 20 реда и са изтрити 6 реда
  1. 20 6
      src/sdk/association.ts

+ 20 - 6
src/sdk/association.ts

@@ -336,17 +336,31 @@ const fullView = async (fn: () => void) => {
     viewModeStack.push(ref('full')),
     showLeftPanoStack.push(ref(false))
   ])
-  await document.documentElement.requestFullscreen()
+  let isFull = false;
+  try {
+    await document.documentElement.requestFullscreen()
+    isFull = true;
+  } catch {}
+  
   const driving = () => document.fullscreenElement || fn()
+  const stop = (ev: KeyboardEvent) => ev.key == "Escape" && fn()
 
-  document.addEventListener('fullscreenchange', driving)
-  document.addEventListener('fullscreenerror', fn)
+  if (isFull) {
+    document.addEventListener('fullscreenchange', driving)
+    document.addEventListener('fullscreenerror', fn)
+  } else {
+    document.addEventListener("keyup", stop)
+  }
 
   return () => {
     popViewMode()
-    document.fullscreenElement && document.exitFullscreen()
-    document.removeEventListener('fullscreenchange', driving)
-    document.removeEventListener('fullscreenerror', fn)
+    if (isFull) {
+      document.fullscreenElement && document.exitFullscreen()
+      document.removeEventListener('fullscreenchange', driving)
+      document.removeEventListener('fullscreenerror', fn)
+    } else {
+      document.removeEventListener("keyup", stop)
+    }
   }
 }