Vue 示例代码

点击外部区域关闭内部弹框

点击外部区域关闭内部弹框.vue

<script setup lang="ts">
//全局点击事件处理器,用于实现"点击外部区域关闭弹窗"的交互功能
import { onMounted, onBeforeUnmount, ref } from 'vue';
export const visible = ref(false); // 弹窗是否显示的状态变量
const handleDocumentClick = (event: MouseEvent) => {
  if (!visible.value) return; // 如果弹窗不显示,直接返回
  const target = event.target as Node | null; // 获取点击事件的目标元素
  if (!target) return; // 如果目标元素不存在,直接返回
  // 点击视频外部区域关闭弹窗
  const layoutContent = document.querySelector('.course-content'); // 获取弹窗内容区域元素
  if (layoutContent && !layoutContent.contains(target)) {
    // 如果点击事件的目标元素不在弹窗内容区域内,关闭弹窗
    visible.value = false;
  }
};

onMounted(() => {
  document.addEventListener('click', handleDocumentClick);
});
onBeforeUnmount(() => {
  document.removeEventListener('click', handleDocumentClick);
});
</script>