当前位置: 首页 > news >正文

vue3实现markdown工具栏的点击事件监听

这里以监听全屏事件为例

监听 Vditor 编辑器的全屏事件

要监听 Vditor 编辑器的全屏事件,你可以使用 Vditor 提供的 API 和事件系统。以下是几种实现方法:

方法一:使用 Vditor 的 after 钩子函数

const vditor = new Vditor('editor', {
  after() {
    // 监听全屏事件
    vditor.vditor.toolbar.elements.fullscreen.addEventListener('click', () => {
      console.log('全屏状态变化');
      if (vditor.vditor.element.classList.contains('vditor--fullscreen')) {
        console.log('进入全屏模式');
      } else {
        console.log('退出全屏模式');
      }
    });
  }
});

 方法二:使用 MutationObserver 监听类变化

const vditor = new Vditor('editor', {
  after() {
    const observer = new MutationObserver((mutations) => {
      mutations.forEach((mutation) => {
        if (mutation.attributeName === 'class') {
          const isFullscreen = vditor.vditor.element.classList.contains('vditor--fullscreen');
          console.log(isFullscreen ? '进入全屏' : '退出全屏');
        }
      });
    });
    
    observer.observe(vditor.vditor.element, {
      attributes: true,
      attributeFilter: ['class']
    });
  }
});

方法三:自定义工具栏按钮事件

const vditor = new Vditor('editor', {
  toolbar: [
    {
      name: 'fullscreen',
      tip: '全屏',
      click() {
        vditor.toggleFullscreen();
        console.log('全屏状态:', vditor.vditor.element.classList.contains('vditor--fullscreen'));
      }
    }
  ]
});

 

注意事项

  1. 确保在 after 回调函数中绑定事件,因为此时 DOM 元素已经初始化完成

  2. Vditor 的全屏状态是通过添加/移除 vditor--fullscreen 类来实现的

  3. 不同版本的 Vditor API 可能略有不同,请根据你使用的版本调整代码

http://www.dtcms.com/a/118404.html

相关文章:

  • Python设计模式:构建模式
  • 检测手机插入USB后,自动启动scrcpy的程序
  • C++建造者模式进化论
  • leetcode155.最小栈
  • 【lodash的omit函数详解 - 从入门到精通】
  • Solidity智能合约漏洞类型与解题思路指南
  • 用Python 还是C\C++ 开发嵌入式物联网项目
  • 使用Python快速删除Docker容器、镜像和存储内容
  • oracle 游标的管理
  • ubuntu安装docker和docker-compose【简单详细版】
  • Git工作流、命令汇总
  • 【GEE学习笔记】报错解决:Sentinel-2 数据集分为 L1C(大气顶层)和 L2A(地表反射率),如何选择波段进行去云处理?
  • 图论:单源最短路(BF算法+迪杰斯特拉算法+spfa算法)
  • 制定大运维管理体系的标准、流程、机制、规范
  • SolidWorks2025三维计算机辅助设计(3D CAD)软件超详细图文安装教程(2025最新版保姆级教程)
  • Tiktok 关键字 视频及评论信息爬虫(2) [2025.04.07]
  • 【Vue】选项卡案例——NBA新闻
  • 大数据笔试题_第一阶段配套笔试题03
  • 滑动窗口思想 面试算法高频题
  • 双引擎驱动:智能知识库 + AI 陪练重构售后服务管理体系
  • 【一篇搞定配置】一篇带你从配置到使用(PyCharm远程)完成服务器运行项目(配置、使用一条龙)【全网最详细版】
  • 算法-尼姆博弈
  • 【【分享开发笔记,赚取电动螺丝刀】参考 RT-thread 的方式管理初始化函数调用】
  • 【Linux】iptables防火墙基本概念
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记2
  • 网络安全应急响应-文件痕迹排查
  • Nginx 反向代理:从入门到精通
  • 硬盘分区格式方案之 MBR(Master Boot Record)主引导记录的 主分区 和 扩展分区 笔记250407
  • KWDB 创作者计划—人工智能赋能工业制造:智能制造的未来之路
  • M1使用docker制作镜像xxl-job,供自己使用