|
@@ -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)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|