首页 > 其他分享 >关于在vue2中自定义右键弹窗

关于在vue2中自定义右键弹窗

时间:2024-09-25 11:50:10浏览次数:10  
标签:index talkInfo chooseText 自定义 粘贴 文本 弹窗 右键

        所需变量

    // 右键点击的弹框对象
      rightDialogbox: null,
      // 鼠标点击后获取的文本
      chooseText: '',
      // 弹窗的偏移
      left: '',
      top: '',
      // 右键点击的弹框显隐
      rightDialogShow: false,

一、阻止原生事件发生

        第一步我们先要在所需的div范围中阻止原生右键事件的发生

        此处有两个事件:

        @contextmenu.prevent="openMenu($event)"  获取右键点击事件

        @mouseup="handleMouseSelect"   获取选中的文本

<div class="talk-info-text" @contextmenu.prevent="openMenu($event)"           @mouseup="handleMouseSelect">
</div>
  // 右键点击事件
  openMenu(e){
    this.rightDialogShow = true
      this.top = e.pageY;
      this.left = e.pageX;
  },

 // 获取鼠标选中的文本
    handleMouseSelect() {
		this.chooseText = window.getSelection().toString()
	},

二、编写右键弹框

        这里除了剪切、复制、粘贴,我主要是做了一些特定的功能(这里暂时忽略)

<div class="right-dialogbox" :style="{left:left-60+'px',top:top-100+'px'}" id="rightDialogbox" ref="rightDialogbox" v-show="rightDialogShow">
      <div class="right-dialogbox-item" @click="cutStr">剪切</div>
      <div class="right-dialogbox-item">复制</div>
      <div class="right-dialogbox-item">粘贴</div>
      <div v-if="form.content[0].title">
      <div class="right-dialogbox-item" v-for="(item,index) in form.content" :key="index" @click="copyToContent(index)">粘贴到{{item.title}}</div>
 </div>

三、编写剪切、复制、粘贴等自定义功能

    // 粘贴文本
    pasteToText(val){
      // 现代浏览器自带api
      navigator.clipboard.writeText(val);
    },
    // 剪切一段文本
    cutStr(){
      let index = this.talkInfo.indexOf(this.chooseText)
      let lastIndex = this.talkInfo.indexOf(this.chooseText[-1])
      this.talkInfo = this.talkInfo.substring(index,lastIndex)
    },
    // 复制到内容中
    copyToContent(index){
      this.form.content[index].content += this.chooseText;
      this.chooseText = '';
    },

标签:index,talkInfo,chooseText,自定义,粘贴,文本,弹窗,右键
From: https://blog.csdn.net/I_Allen_Liu/article/details/142517452

相关文章

  • PyTorch自定义学习率调度器实现指南
    在深度学习训练过程中,学习率调度器扮演着至关重要的角色。这主要是因为在训练的不同阶段,模型的学习动态会发生显著变化。在训练初期,损失函数通常呈现剧烈波动,梯度值较大且不稳定。此阶段的主要目标是在优化空间中快速接近某个局部最小值。然而,过高的学习率可能导致模型跳过潜在的......
  • helm初始化自定义应用
    使用Helm初始化一个应用(即创建一个HelmChart),可以通过Helm提供的helmcreate命令生成一个基础的HelmChart目录结构。下面是具体步骤:1.安装Helm首先确保你的环境中已经安装了Helm。如果还没有安装,可以按照Helm官方文档进行安装:Helm安装文档2.初始化HelmCh......
  • Android连接蓝牙自定义封装SDK(基于Cordova与ionic)
    今天给大家分享一款基于Cordova与ionic框架自定义封装的Android手机连接蓝牙的插件。自己公司遇到的业务需求是,与第三方公司合作,需要在项目现场打印项目物资与物料验收单,后期提供给财务核对报销等。第三方公司提供蓝牙打印机与手持机,我们需要自己结合业务开发相对应的功能。......
  • OpenCV_自定义线性滤波(filter2D)应用详解
    OpenCVfilter2D将图像与内核进行卷积,将任意线性滤波器应用于图像。支持就地操作。当孔径部分位于图像之外时,该函数根据指定的边界模式插值异常像素值。卷积核本质上是一个固定大小的系数数组,数组中的某个元素被作为锚点(一般是数组的中心)。上面讲了线性滤波的实质就是计算相......
  • vue自定义指令实现打字效果
    实现如通义灵码官网关于代码片段中,当鼠标hover上代码上时,出现打字效果,示例地址:https://tongyi.aliyun.com/lingma?spm=5176.28508143.J_ahRFo5CaAe_asSOaCgS4J.14.5421154auHz4xJ&scm=20140722.M_185502201.P_131.MO_2276-ID_10360025-MID_10360025-CID_31292-ST_10352-V_1通过vu......
  • 多校园信息付费发布顶置自定义表单小程序开源版开发
    多校园信息付费发布顶置自定义表单小程序开源版开发为校园管理和互动提供了强大的支持,包括用户端和运营后台两大部分。用户端允许学生和教职工方便地访问各种功能模块,而运营后台则使管理员能够高效地管理和配置系统。产品支持自定义模块和表单,允许根据需求创建各种功能,例如表白墙、......
  • WinForm右键菜单的快键键设置
    原文链接:https://blog.csdn.net/zhourongxiang1/article/details/138176092Form中有一个富文本框控件,在里面右键鼠标,弹出下拉菜单。快捷键的效果则是按下alt+p,触发按下属性事件。1.从工具箱添加RichTextBox2.然后添加ContextMenuStrip 3.选择RichTextBox的ContextMenuStri......
  • 阿里云函数计算自定义域名的SSL证书免费全自动申请及部署
    ####(本人现在只做了证书部署,自动任务可以执行但是所生成的记录值没办法自动在阿里云的域名解析列表中更新,因此查到这篇文章,但发现太麻烦……又感觉以后一定会用到,所以先转载保存记录一下,原文地址:https://developer.aliyun.com/article/1475347)阿里云函数计算大大简化了开发部......
  • UIOTOS示例:自定义弹窗输出表单数据 | 前端低代码 前端零代码 web组态 无代码 amis gov
    目标对话框作为容器组件,可以隐藏掉默认的窗体头和脚,完全由内嵌页自定义,参见对话框自定义外观。并且也能获取弹窗纯表单数据,如下所示: 步骤内嵌页1.新建略。2.拖放组件拖放三个输入框,标识分别施志伟id、name、phone;两个按钮标识分别设置为cancel和ok 主页面1.新......
  • github pages使用cloudflare加速自定义域名概要
    首先,整个操作涉及三个管理方githubpagescloudflare的DNS解析设置自定义域名的解析设置其次,你需要知悉这些内容DNS及CNAME解析githubpages的基本部署域名的基础管理cloudflare的基本域名添加及解析管理概要步骤githubpages部分在githubpages页面,先启用部署(Build......