vue 右键菜单的实现

最近一个项目,选中某些文本,然后右键进行一些操作,使用了vue-contextmenujs插件

  1. 安装vue-contextmenujs

    npm install vue-contextmenujs

  2. mian.js中引用该组件

    import Contextmenu from 'vue-contextmenujs';
    Vue.use(Contextmenu);

  3. 页面中使用

4.判断是否在该文本区域内

复制代码
 rightClick(event) {
      console.log("点击了右键", event);
      this.chapterText = ""; // 先清空,chapterText 保存选中文本
      let sel = window.getSelection
        ? window.getSelection()
        : document.selection.createRange();
      let text = sel.toString();
      if (!text) {
        return false;
      }

      let divId = "bodyContainer";
      if (sel.getRangeAt) {

        var range = sel.getRangeAt(0);
        var ancestor = range.commonAncestorContainer;
        while (
          ancestor.id != divId && // Check id, class or otherwise
          ancestor.parentElement != null
        ) {
          ancestor = ancestor.parentElement;
        }

        if (ancestor.id == divId) {
          // Selection is within the editor.
          console.log("在div内");
          this.chapterText = window.getSelection().toString();
          this.$contextmenu({
            items: this.rightMenuData,
            event, // 鼠标事件信息
            customClass: "custom-class", // 自定义菜单 class
            zIndex: 3, // 菜单样式 z-index
            minWidth: 150, // 主菜单最小宽度
          });
        } else {
          console.log("不在div内");
          return false;
        }
      } else {
        //
        return false;
      }

      return false;
    },

5.菜单

复制代码
 rightMenuData: [
        {
          label: "翻译",
          onClick: () => {
            this.handleTranslate();
          },
        },
           ....
        },
      ],
相关推荐
憧憬成为web高手2 小时前
ACTF 12307复现
前端·bootstrap·html
wordbaby3 小时前
Axios 上传大文件崩溃:鸿蒙 RNOH 下 XHR 返回空响应头引发的"假失败"
前端·react native
wordbaby3 小时前
React Native 列表分页实战:下拉刷新与上拉加载的工程化方案
前端·react native
wordbaby4 小时前
脱离 Tab 栏的艺术:React Native 全屏子页面的导航架构实践
前端·react native·harmonyos
陈随易4 小时前
Redis 8.8发布,一定要更新
前端·后端·程序员
wordbaby4 小时前
React Native 新架构落地鸿蒙:跨三端政务级应用的工程实践与深度复盘
前端·react native·harmonyos
晓说前端5 小时前
第一篇:为什么学TypeScript?—— 优势、场景与环境搭建
javascript·ubuntu·typescript
excel6 小时前
为什么我推荐使用 Termius:现代 SSH 工具的完整体验
前端·后端
ZC跨境爬虫6 小时前
模块化烹饪小程序开发日记 Day7:(菜谱详情接口开发与JSON数据读取全流程)
前端·javascript·css·ui·微信小程序·json
এ慕ོ冬℘゜6 小时前
JS 前端基础面试题
开发语言·前端·javascript