diff --git a/src/global.d.ts b/src/global.d.ts index 66194e36..e37c69f6 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,13 +1,16 @@ interface HTMLElement { webkitRequestFullScreen(options?: FullscreenOptions): Promise; mozRequestFullScreen(options?: FullscreenOptions): Promise; + msRequestFullscreen(options?: FullscreenOptions): Promise; } interface Document { - mozFullScreen: boolean; - webkitIsFullScreen: boolean; - webkitFullScreen: boolean; + webkitFullscreenElement: Element | null; + mozFullScreenElement: Element | null; + msFullscreenElement: Element | null; + webkitCurrentFullScreenElement: Element | null; mozCancelFullScreen(): Promise; - webkitCancelFullScreen(): Promise; + webkitExitFullscreen(): Promise; + msExitFullscreen(): Promise; } \ No newline at end of file diff --git a/src/utils/fullscreen.ts b/src/utils/fullscreen.ts index 551fedbe..98498dcb 100644 --- a/src/utils/fullscreen.ts +++ b/src/utils/fullscreen.ts @@ -4,18 +4,24 @@ export const enterFullscreen = () => { if (docElm.requestFullscreen) docElm.requestFullscreen() else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen() else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen() + else if (docElm.msRequestFullscreen) docElm.msRequestFullscreen() } // 退出全屏 export const exitFullscreen = () => { if (document.exitFullscreen) document.exitFullscreen() else if (document.mozCancelFullScreen) document.mozCancelFullScreen() - else if (document.webkitCancelFullScreen) document.webkitCancelFullScreen() + else if (document.webkitExitFullscreen) document.webkitExitFullscreen() + else if (document.msExitFullscreen) document.msExitFullscreen() } // 判断是否全屏 -export const isFullscreen = () => ( - document.mozFullScreen || - document.webkitIsFullScreen || - document.webkitFullScreen -) \ No newline at end of file +export const isFullscreen = () => { + const fullscreenElement = + document.fullscreenElement || + document.mozFullScreenElement || + document.webkitFullscreenElement || + document.msFullscreenElement || + document.webkitCurrentFullScreenElement + return !!fullscreenElement +} \ No newline at end of file diff --git a/src/views/Screen/hooks/useFullscreen.ts b/src/views/Screen/hooks/useFullscreen.ts index 27fa27e6..2103e693 100644 --- a/src/views/Screen/hooks/useFullscreen.ts +++ b/src/views/Screen/hooks/useFullscreen.ts @@ -8,7 +8,7 @@ export default () => { const { exitScreening } = useScreening() - const windowResizeListener = () => { + const handleFullscreenChange = () => { fullscreenState.value = isFullscreen() if (!fullscreenState.value && escExit.value) exitScreening() @@ -17,9 +17,9 @@ export default () => { onMounted(() => { fullscreenState.value = isFullscreen() - window.addEventListener('resize', windowResizeListener) + document.addEventListener('fullscreenchange', handleFullscreenChange) }) - onUnmounted(() => window.removeEventListener('resize', windowResizeListener)) + onUnmounted(() => document.removeEventListener('fullscreenchange', handleFullscreenChange)) const manualExitFullscreen = () => { if (!fullscreenState.value) return