vue如何重写移动端长按文字复制的功能

移动端长按文字会出现 “复制 全选”的默认弹框(这里拿安卓举例)

但是有的时候需要在长按的时候增加别的功能 这时候就需要禁用原生的弹框然后重写自己的功能

第一步:禁用掉原生弹窗 但是支持划选文字

重要css属性:

-webkit-touch-callout: none;

ps:-webkit-touch-callout: none; 是 CSS 样式属性,通常用于在WebKit内核的浏览器(如Chrome和Safari)中禁止长按链接或图片时默认的弹出菜单。这个属性可以帮助开发者在移动端网页开发中控制长按元素时的行为。

当你在某个元素上应用 -webkit-touch-callout: none; 样式时,长按该元素不会触发默认的弹出菜单,比如在图片上长按不会出现保存图片的选项,或者在链接上长按不会出现打开链接或复制链接的选项。

例如,可以将这个样式应用于图片元素来禁用默认的弹出菜单:

img {-webkit-touch-callout: none;
}

需要注意的是,这个样式属性仅在WebKit内核的浏览器中生效,其他浏览器可能需要使用不同的样式属性来实现类似的效果

现在就可以看到 文字长按有选中的区域 但是不会再弹出原生的复制全选了。

 下一步需要实现长按弹出自己封装的弹框

第二步:长按触发事件:

<template><div @touchmove="onTouchMove($event)"@touchstart="touchstart($event, msgObject)"@touchend="emptyTime()">{{'内容'}}<div>
</template><script>methods: {touchstart(e,val){// returnconsole.log(e,val)console.log('touchstart val====', val);// if (this.msgObject.msgFrom == '3' && this.msgObject.refSessionId)this.toucheX = e.targetTouches[0].screenXthis.toucheY = e.targetTouches[0].screenYclearTimeout(this.Loop); //再次清空定时器,防止重复注册定时器this.Loop = setTimeout(function() {e.preventDefault()let nodeArr = document.getElementsByClassName("dropdown-content")if(Array.from(nodeArr).length>0){Array.from(nodeArr).forEach(item => {item.style.display = 'none'})}let nodeArrs = document.getElementsByClassName("dropdown-content-user")if(Array.from(nodeArrs).length>0){Array.from(nodeArrs).forEach(item => {item.style.display = 'none'})}}.bind(this), 800);console.log('touchstart事件触发了222')// 清除全局下的回复弹框this.removeReference()// this.$emit('on-touchstart',e)},   // 长按结束清空定时器emptyTime:function (e) {clearTimeout(this.Loop); //清空定时器,防止重复注册定时器},// 滑动的话取消长按监听onTouchMove (e) {const moveX = e.targetTouches[0].screenXconst moveY = e.targetTouches[0].screenY// 解决vivo机型,手指没有move,touchmove事件仍然会调用而导致setTimeout被clearif (this.toucheX !== moveX || this.toucheY !== moveY) {// 手指滑动,清除定时器,中断长按逻辑this.Loop && clearTimeout(this.Loop)}},
}
</script>

tourchStart里面放置长按要触发的事件 可以是展示自己重写的弹框显示事件

 第三步: 实现复制功能:

使用的是vue-clipboard2": "^0.3.3"插件

弹框里面的复制按钮的代码:

<div@touchstart.stop@click.stop="copyMsgContent"v-clipboard:copy="copyContent"v-clipboard:success="onCopy"v-clipboard:error="onError"v-if="msgObject.msgType == '1'"class="app-tools-content"><img src="../../assets/imgs/app_tools_copy.svg" /><p>复制</p></div>

copyMsgContent方法:

copyMsgContent () {
const selectText = window.getSelection().toString()? window.getSelection().toString(): this.mobileSelectContent? this.mobileSelectContent: "";  // 获取当前window滑选的文字
this.copyContent = str; // 给绑定的copyContent赋值
} 

这样就实现了重写复制的功能~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2814443.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

StarRocks——Stream Load 事务接口实现原理

目录 前言 一、StarRocks 数据导入 二、StarRocks 事务写入原理 三、InLong 实时写入StarRocks原理 3.1 InLong概述 3.2 基本原理 3.3 详细流程 3.3.1 任务写入数据 3.3.2 任务保存检查点 3.3.3 任务如何确认保存点成功 3.3.4 任务如何初始化 3.4 Exactly Once 保证…

Ethernet/IP转Modbus TCP网关

产品功能 1 YC-EIP-TCP工业级EtherNet/IP 网关 2 Modbus TCP 转 EtherNet/IP 3支持ModBus主从站 4 即插即用 无需编程 轻松组态 ,即实现数据交互 5导轨安装 支持提供EDS文件 6 EtherNET/IP与ModBus互转数据透明传输可接入PLC组态 支持CodeSys/支持欧姆龙PLC 支持罗克韦尔(AB) 典…

LACP——链路聚合控制协议

LACP——链路聚合控制协议 什么是LACP&#xff1f; LACP&#xff08;Link Aggregation Control Protocol&#xff0c;链路聚合控制协议&#xff09;是一种基于IEEE802.3ad标准的实现链路动态聚合与解聚合的协议&#xff0c;它是链路聚合中常用的一种协议。 链路聚合组中启用了…

jenkins+kubernetes+git+dockerhub构建devops云平台

Devops简介 k8s助力Devops在企业落地实践 传统方式部署项目为什么发布慢&#xff0c;效率低&#xff1f; 上线一个功能&#xff0c;有多少时间被浪费了&#xff1f; 如何解决发布慢&#xff0c;效率低的问题呢&#xff1f; 什么是Devops&#xff1f; 敏捷开发 提高开发效率&…

卖东西的微信小程序多少钱?卖货小程序怎么做?

部分商家在寻找一个简单的解决方案来在线销售商品&#xff0c;需求并不复杂&#xff0c;能让客户轻松下单并完成支付的商城小程序就已足够。那么做一个这样的商城小程序要怎么做呢&#xff1f;多少钱&#xff1f; 您可能会想&#xff1a;我不懂编程&#xff0c;也没有搭建过小程…

导览系统厂家|景区电子导览|手绘地图|AR导览|语音导览系统

随着元宇宙、VR、AR等新技术的快速发展&#xff0c;旅游服务也更加多元化、智能化。景区导览系统作为旅游服务的重要组成部分&#xff0c;其形式更加多元化智能化。智能导览系统作为一种新的服务方式&#xff0c;能够为游客提供更加便捷的旅游服务和游览体验&#xff0c;也逐渐…

windows安装部署node.js并搭建Vue项目

一、官网下载安装包 官网地址&#xff1a;https://nodejs.org/zh-cn/download/ 二、安装程序 1、安装过程 如果有C/C编程的需求&#xff0c;勾选一下下图所示的部分&#xff0c;没有的话除了选择一下node.js安装路径&#xff0c;直接一路next 2、测试安装是否成功 【winR】…

如何搭建零售行业经营分析体系?

​怎么搭建零售行业的经营分析体系&#xff1f; 整体思路就是&#xff1a;利用数据中台基于业务全价值链的数据沉淀&#xff0c;借助大数据技术进行采集、计算、存储和加工&#xff0c;同时统一数据建模与治理&#xff0c;构建数据资产&#xff0c;充分挖掘数据&#xff0c;实…

[electron] electron环境搭建

electron组成部分 Electron作为一个跨平台的框架。按照道理来说Node.js作为语言已经统一了不同平台的操作&#xff0c;为什么还有Native apis。好吧&#xff0c;先不管那么多首先我们需要先下载Node.js nodejs官网 。记得还要安装npm包管理&#xff0c;这里就不细讲。 npm换源…

[极客大挑战 2019]LoveSQL1 题目分析与详解

一、题目简介&#xff1a; 二、通关思路&#xff1a; 1、首先查看页面源代码&#xff1a; 我们发现可以使用工具sqlmap来拿到flag&#xff0c;我们先尝试手动注入。 2、 打开靶机&#xff0c;映入眼帘的是登录界面&#xff0c;首先尝试万能密码能否破解。 username: 1 or 11…

istio学习记录——VirtualService详解

上一篇使用VirtualService进行了简单的流量控制&#xff0c;并通过Gateway将流量导入到了集群内。这一篇将更加深入的介绍 VirtualService。 k8s中有service&#xff0c;service能够对流量进行负载均衡&#xff0c;那为什么istio又引入了VirtualService呢&#xff0c;因为serv…

MATLAB_ESP32有限脉冲响应FIR无限脉冲响应IIR滤波器

要点 ESP32闪烁LED&#xff0c;计时LEDESP32基础控制&#xff1a;温控输出串口监控&#xff0c;LCD事件计数器&#xff0c;SD卡读写&#xff0c;扫描WiFi网络&#xff0c;手机控制LED&#xff0c;经典蓝牙、数字麦克风捕捉音频、使用放大器和喇叭、播放SD卡和闪存MP3文件、立体…

Vuex的mutations和actions区别

Vuex中的mutations用于同步操作&#xff0c;而actions则处理异步操作。以下是它们的具体区别&#xff1a; 同步与异步&#xff1a; Mutations是同步的&#xff0c;这意味着在mutation中的函数执行时&#xff0c;不能包含任何异步操作&#xff0c;如Promise或者setTimeout等。…

solidity编程

一.Solidity 简介 Solidity 是⼀种⽤于编写以太坊虚拟机&#xff08; EVM &#xff09;智能合约的 编程语⾔。我认为掌握 Solidity 是参与链上项⽬的必备技 能&#xff1a;区块链项⽬⼤部分是开源的&#xff0c;如果你能读懂代码&#xff0c;就可以 规避很多亏钱项⽬。…

省市区街道/乡镇四级联动vue3

最近优化了一个省.市.区/县、乡镇/街道的四级联动组件&#xff0c;技术栈是element vue3记录一下。 本来是这样的三级联动&#xff1a; 这个三级联动很简单&#xff0c;直接利用el-select组件把地区值带进去就行了&#xff0c;现在要优化成省.市.区/县、乡镇/街道的四级联动&…

GORM框架快速入门

GORM框架 gorm地址 &#xff1a;https://github.com/go-gorm/gorm 目前使用最广泛的一个go语言数据库框架 1、入门 数据库以目前使用最多的mysql为例。 //安装MySQL驱动 go get -u gorm.io/driver/mysql //安装gorm包 go get -u gorm.io/gorm //安装gin go get -u github.c…

Bicycles(变形dijkstra,动态规划思想)

Codeforces Round 918 (Div. 4) G. Bicycles G. Bicycles 题意&#xff1a; 斯拉夫的所有朋友都打算骑自行车从他们住的地方去参加一个聚会。除了斯拉维奇&#xff0c;他们都有一辆自行车。他们可以经过 n n n 个城市。他们都住在城市 1 1 1 &#xff0c;想去参加位于城市…

Python程序打包成exe可执行文件的常用方法

在Python中,您可以使用一些工具将您的Python程序打包成可执行文件(.exe)。以下是一些常用的工具: PyInstaller: PyInstaller是一个流行的工具,它可以将Python脚本打包成独立的可执行文件,支持Windows、Linux和Mac。您可以使用以下命令安装PyInstaller: pip install pyin…

Python 快速入门篇

本文简介 点赞 关注 收藏 学会了 2024年是AI的元年&#xff0c;AI的爆火不仅推动了科技领域的进步&#xff0c;更让 Python 语言成为了这一变革中的关键角色。 Python 语言简单易懂&#xff0c;语法清晰明了&#xff0c;懂一点英语的都能学得会。很适合在职场摸爬滚打多年…

python 基础绘图函数 实例

简介 在 Python 中&#xff0c;有许多用于绘图的库。以下是一些常用的 Python 绘图库及其基本绘图函数的简要介绍&#xff1a; Matplotlib: matplotlib.pyplot.plot(x, y): 绘制线图。matplotlib.pyplot.scatter(x, y): 绘制散点图。matplotlib.pyplot.bar(x, height): 绘制条…