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

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

时间:2024-09-25 11:50:10浏览次数:17  
标签: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自定义学习率调度器实现指南
    在深度学习训练过程中,学习率调度器扮演着至关重要的角色。这主要是因为在训练的不同阶段,模型的学习动态会发生显著变化。在训练初期,损失函数通常呈现剧烈波动,梯度值较大且不稳定。此阶段的主要目标是在优化空间中快速接近某个局部最小值。然而,过高的学习率可能导致模型跳过潜在的......
  • 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......
  • 多校园信息付费发布顶置自定义表单小程序开源版开发
    多校园信息付费发布顶置自定义表单小程序开源版开发为校园管理和互动提供了强大的支持,包括用户端和运营后台两大部分。用户端允许学生和教职工方便地访问各种功能模块,而运营后台则使管理员能够高效地管理和配置系统。产品支持自定义模块和表单,允许根据需求创建各种功能,例如表白墙、......