refactor: 全屏判断逻辑调整(#106)

This commit is contained in:
pipipi-pikachu 2022-05-24 21:56:19 +08:00
parent 860dd4bca6
commit cf81839ed3
3 changed files with 22 additions and 13 deletions

11
src/global.d.ts vendored
View File

@ -1,13 +1,16 @@
interface HTMLElement { interface HTMLElement {
webkitRequestFullScreen(options?: FullscreenOptions): Promise<void>; webkitRequestFullScreen(options?: FullscreenOptions): Promise<void>;
mozRequestFullScreen(options?: FullscreenOptions): Promise<void>; mozRequestFullScreen(options?: FullscreenOptions): Promise<void>;
msRequestFullscreen(options?: FullscreenOptions): Promise<void>;
} }
interface Document { interface Document {
mozFullScreen: boolean; webkitFullscreenElement: Element | null;
webkitIsFullScreen: boolean; mozFullScreenElement: Element | null;
webkitFullScreen: boolean; msFullscreenElement: Element | null;
webkitCurrentFullScreenElement: Element | null;
mozCancelFullScreen(): Promise<void>; mozCancelFullScreen(): Promise<void>;
webkitCancelFullScreen(): Promise<void>; webkitExitFullscreen(): Promise<void>;
msExitFullscreen(): Promise<void>;
} }

View File

@ -4,18 +4,24 @@ export const enterFullscreen = () => {
if (docElm.requestFullscreen) docElm.requestFullscreen() if (docElm.requestFullscreen) docElm.requestFullscreen()
else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen() else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen()
else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen() else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen()
else if (docElm.msRequestFullscreen) docElm.msRequestFullscreen()
} }
// 退出全屏 // 退出全屏
export const exitFullscreen = () => { export const exitFullscreen = () => {
if (document.exitFullscreen) document.exitFullscreen() if (document.exitFullscreen) document.exitFullscreen()
else if (document.mozCancelFullScreen) document.mozCancelFullScreen() 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 = () => ( export const isFullscreen = () => {
document.mozFullScreen || const fullscreenElement =
document.webkitIsFullScreen || document.fullscreenElement ||
document.webkitFullScreen document.mozFullScreenElement ||
) document.webkitFullscreenElement ||
document.msFullscreenElement ||
document.webkitCurrentFullScreenElement
return !!fullscreenElement
}

View File

@ -8,7 +8,7 @@ export default () => {
const { exitScreening } = useScreening() const { exitScreening } = useScreening()
const windowResizeListener = () => { const handleFullscreenChange = () => {
fullscreenState.value = isFullscreen() fullscreenState.value = isFullscreen()
if (!fullscreenState.value && escExit.value) exitScreening() if (!fullscreenState.value && escExit.value) exitScreening()
@ -17,9 +17,9 @@ export default () => {
onMounted(() => { onMounted(() => {
fullscreenState.value = isFullscreen() fullscreenState.value = isFullscreen()
window.addEventListener('resize', windowResizeListener) document.addEventListener('fullscreenchange', handleFullscreenChange)
}) })
onUnmounted(() => window.removeEventListener('resize', windowResizeListener)) onUnmounted(() => document.removeEventListener('fullscreenchange', handleFullscreenChange))
const manualExitFullscreen = () => { const manualExitFullscreen = () => {
if (!fullscreenState.value) return if (!fullscreenState.value) return