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

这里以监听全屏事件为例

监听 Vditor 编辑器的全屏事件

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

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

javascript 复制代码
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 监听类变化

javascript 复制代码
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']
    });
  }
});

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

javascript 复制代码
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 可能略有不同,请根据你使用的版本调整代码

相关推荐
念念不忘 必有回响21 小时前
nginx前端部署与Vite环境变量配置指南
前端·nginx·vite
JIngJaneIL1 天前
篮球论坛|基于SprinBoot+vue的篮球论坛系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·篮球论坛系统
程序猿阿伟1 天前
《首屏加载优化手册:Vue3+Element Plus项目提速的技术细节》
前端·javascript·vue.js
麦麦大数据1 天前
D030知识图谱科研文献论文推荐系统vue+django+Neo4j的知识图谱|论文本文相似度推荐|协同过滤
vue.js·爬虫·django·知识图谱·科研·论文文献·相似度推荐
尘觉1 天前
面试-浅复制和深复制?怎样实现深复制详细解答
javascript·面试·职场和发展
fruge1 天前
Vue Pinia 状态管理实战指南
前端·vue.js·ubuntu
绝无仅有1 天前
某教育大厂面试题解析:MySQL索引、Redis缓存、Dubbo负载均衡等
vue.js·后端·面试
sean1 天前
开发一个自己的 claude code
前端·后端·ai编程
用户21411832636021 天前
dify案例分享-用 Dify 一键生成教学动画 HTML!AI 助力,3 分钟搞定专业级课件
前端
chxii1 天前
ISO 8601日期时间标准及其在JavaScript、SQLite与MySQL中的应用解析
开发语言·javascript·数据库