diff --git a/packages/devui-vue/devui/fullscreen/src/fullscreen.tsx b/packages/devui-vue/devui/fullscreen/src/fullscreen.tsx index 99495bf5d60d31ce005dd725264aedb56d28a756..b10f75c3bc71e88830b1a4cbb370a741a100b8dc 100644 --- a/packages/devui-vue/devui/fullscreen/src/fullscreen.tsx +++ b/packages/devui-vue/devui/fullscreen/src/fullscreen.tsx @@ -5,6 +5,7 @@ import { useSlots, renderSlot, onMounted, + onBeforeUnmount, ref } from 'vue' import { fullscreenProps, FullscreenProps } from './fullscreen-types' @@ -15,12 +16,12 @@ export default defineComponent({ emits: ['fullscreenLaunch'], setup(props: FullscreenProps, ctx) { - let currentTarget = ref(null) + let currentTarget = null const isFullscreen = ref(false) const slotElement = ref(null) const onFullScreenChange = () => { - if (currentTarget.value) { + if (currentTarget) { const targetElement: HTMLElement = currentTarget if (document.fullscreenElement) { // 进入全屏 addFullScreenStyle() @@ -139,6 +140,15 @@ export default defineComponent({ document.addEventListener('webkitfullscreenchange', onFullScreenChange) document.addEventListener('keydown', handleKeyDown) }) + onBeforeUnmount(()=>{ + const btnLaunch = slotElement.value.querySelector('[fullscreen-launch]') + if (btnLaunch) { btnLaunch.removeEventListener('click', handleFullscreen) } + document.removeEventListener('fullscreenchange', onFullScreenChange) + document.removeEventListener('MSFullscreenChange', onFullScreenChange) + document.removeEventListener('webkitfullscreenchange', onFullScreenChange) + document.removeEventListener('keydown', handleKeyDown) + // removeFullScreenStyle(); + }) return () => { const defaultSlot = renderSlot(useSlots(), 'default') // if (defaultSlot.children.length === 0) throw new Error('未发现全屏元素') diff --git a/packages/devui-vue/docs/components/fullscreen/index.md b/packages/devui-vue/docs/components/fullscreen/index.md index 7132dcd5bca23412b673b27276cd9399b4fce7b7..ccaf8d91b29fbcebab5395dce5369d785706903f 100644 --- a/packages/devui-vue/docs/components/fullscreen/index.md +++ b/packages/devui-vue/docs/components/fullscreen/index.md @@ -50,9 +50,9 @@ export default { ```vue