简介
当文档对象被转换为设计模式的时候(选中,设置contentEditable等),文档对象提供了一个execCommand方法,通过给这这个方法传递参数命令可以操作可编辑区域的内容。这个方法的命令大多数是对文档选中区域的操作
(如bold, italics等), 也可以插入一个元素(如增加一个a链接) 或者修改一个完整行 (如缩进).。当元素被设置了contentEditable,通过执行execCommand
方法可以对当前活动元素进行很多操作。
https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand

执行以下解决方案条件:(这个是原理)

①执行复制方法时 所复制文字不能被任何 块级元素和行内块元素和行内元素遮盖否则无效;(解决方案:将文本通过绝对定位或其他方式移除屏幕外)

②ios中不能复制属性值,只能复制文本元素节点;(解决方案:可以把文字颜色设成背景色就能达到隐藏看不见的效果不影响显示);

②今天咱们只会用到 copy .

简介里说 当文档对象被转换为设计模式的时候(选中,设置contentEditable等),文档对象提供了一个execCommand方法.

但是咱们根本不想出现一个 textarea 好嘛, 否则和window.prompt有啥区别呢?

最简单最有效的方式就是把 textarea 给隐藏起来嘛

js代码

copy = () => {if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//区分iPhone设备console.log('ios')window.getSelection().removeAllRanges();//这段代码必须放在前面否则无效var Url2=document.getElementById("copy");//要复制文字的节点var range = document.createRange();// 选中需要复制的节点range.selectNode(Url2);// 执行选中元素window.getSelection().addRange(range);// 执行 copy 操作var successful = document.execCommand('copy');// 移除选中的元素window.getSelection().removeAllRanges();}else{var text = document.getElementById("copy").innerText;const textarea = document.createElement("textarea") ;textarea.style.position = 'fixed' ;textarea.style.top = 0 ;textarea.style.left = 0 ;textarea.style.border = 'none' ;textarea.style.outline = 'none' ;textarea.style.resize = 'none';textarea.style.background = 'transparent' ;textarea.style.color = 'transparent';textarea.value = text ;// 修改文本框的内容document.body.appendChild(textarea);textarea.select()// 选中文本try { const msg = document.execCommand('copy') ?'successful' : 'unsuccessful' ;alert(msg)} catch (err) { alert('unable to copy', err) }document.body.removeChild(textarea)}
}

jsp代码

<div className='button' style={{marginTop:'1rem'}}>保存二维码到手机</div><div style={{marginTop: '0.5rem'}} className='flex'><div className='button left-button'>微信号:<span id='copy'>ZYYLAPP</span></div><div className='button right-button' onClick={()=>{this.copy()}}>复制</div>

H5移动端完美实现点击复制文本的解决方法,已经自测!相关推荐

  1. HBuilder X右端预览点击无反应(解决方法)

    可能是因为把压缩包解压到了c盘以外.本人亲测桌面解压运行顺利,放到别的盘里就不行. 原因可能跟​​​​​​解决打不开内置浏览器的问题(提示:[WARNING:] error : "无法加载库 ...

  2. h5微信本地调试 vue_UniApp本地调试H5(谷歌chrome浏览器)跨域问题的解决方法,亲测可用...

    UniApp本地调试H5跨域(谷歌chrome浏览器,UniApp内置浏览器不存在此问题)的推荐方案:欺骗浏览器,让浏览器觉得你没有跨域(其实还是跨域了,用的是代理) 客户器端解决方案(亲测可用): ...

  3. TextView does not support text selection. Selection cancelled. 。TextViews复制文本失效解决方法

    解决方法 前人种下了种子-- android:descendantFocusability="blocksDescendants" 去掉这个属性即可

  4. 移动端js实现点击复制到剪贴板,【真正】兼容所有浏览器uc、qq、微信、手机自带等浏览器...

    移动端js实现点击复制到剪贴板,带提示,[真正]兼容所有浏览器,包括安卓和ios及uc.qq.微信.手机自带等浏览器. github,欢迎star: https://github.com/majian ...

  5. js点击复制文本 - 案例篇

    文章目录 js点击复制文本 :代码+效果图 效果图 · 示下: html 代码如下: 注意代码: 附:[javascript监听键盘事件 - 如表单enter回车提交](https://blog.cs ...

  6. 【前端技巧】实现点击复制文本内容方法

    /*** 点击复制文本内容* * @param {String} content * * @author Outman* @date 2022-10-27*/ // [旧]利用inputElement ...

  7. vue 给checkbox 赋值_Vue动态生成el-checkbox点击无法赋值的解决方法

    前言 最近遇到一个问题,在一个页面需要动态渲染页面内的表单,其中包括 checkbox 表单类型,并且使用 Element 组件 UI 时,此时 v-model 绑定的数据也是动态生成的 例如: 定义 ...

  8. win10 JDK-8u231安装点击下一步没反应 解决方法-JDK安装记录

    先说结论:win10 JDK-8u231安装点击下一步没反应 解决方法就是换安装包,最显眼的那个jdk-8u231-windows-x64.exe不能用,亲测 jdk-11.0.5_windows-x ...

  9. 移动端网页布局中需要注意事项以及解决方法总结

    移动端网页布局中需要注意事项以及解决方法总结,这份对我们在布局移动端网页的时候非常有用! winphone系统a.input标签被点击时产生的半透明灰色背景怎么去掉 <meta name=&qu ...

最新文章

  1. 小米立Flag:要做年轻人的第一个深度学习框架
  2. 倒计时|全场书籍低至 3.5 折起,无门槛包邮!
  3. 转载:keil中使用Astyle格式化你的代码的方法2篇合
  4. 写一个参数返回二进制中1的个数
  5. 欧盟数据保护新规则 75%云应用没准备好
  6. 人月神话之阅读笔记01
  7. jquerymobile使用技巧
  8. c语言里字符串和字符串字面量,string literals(字符串字面量)
  9. 华为云区块链的跨云联通能力构建
  10. 报错:<ly-tab> - did you register the component correctly? For recursive components, make sure to provi
  11. [CTS2019]氪金手游 概率Dp,树形Dp,容斥原理
  12. 2022河南萌新联赛第(二)场:河南理工大学(赛后总结)
  13. memtester4.3.0
  14. Excel中使用正则表达式的方法
  15. bootstrap实战--微金所项目(导航栏)
  16. java版仿拼多多Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城 直播带货商城 电子商务 拼团商城源码
  17. Linux系统编程:验证kernel内核缓存区大小->4096字节
  18. Revit开发柱附着和分离
  19. Spring AOP 的底层实现
  20. 安卓系统查看分区挂载信息

热门文章

  1. 解决联想电脑windows7系统开机提示DHCP自检,然后按下esc键提示Error1962No operating system found.Press any key to repeat boot
  2. 大数据可视化应用工具,主要有哪几种?
  3. Strassen矩阵乘法(C++)
  4. 修改maven配置文件settings.xml(阿里云镜像,下载速度快)
  5. 杭州居住证到期后如何续期
  6. HTML列表 form表单 选择按钮
  7. 通过连接大华dss平台来实现查看摄像头画面和实现云台控制功能Extjs
  8. win7重装系统以及office安装
  9. Android百度地图仿微信发送位置
  10. 【图像检索】DOLG论文