useFullscreen.ts
916 Bytes
import { ref, onMounted, onUnmounted } from 'vue';
export function useFullscreen() {
// 当前全屏状态
const isFullscreen = ref(Boolean(document.fullscreenElement));
// 切换全屏状态
const toggleFullscreen = () => {
if (!document.fullscreenElement) {
document.documentElement.requestFullscreen();
} else {
if (document.exitFullscreen) document.exitFullscreen();
}
isFullscreen.value = !isFullscreen.value;
};
// 监听全屏状态变化
const onFullscreenChange = () => {
isFullscreen.value = Boolean(document.fullscreenElement);
};
// 在组件挂载时添加监听器
onMounted(() => {
document.addEventListener('fullscreenchange', onFullscreenChange);
});
// 组件卸载时移除监听器
onUnmounted(() => {
document.removeEventListener('fullscreenchange', onFullscreenChange);
});
return { isFullscreen, toggleFullscreen };
}