技术栈:uniapp的vue3+vite2+ts版本
前言:思路是创建一个图标,引用,然后在父组件中调用该子组件的方法,核心是setCopy()里的内容(也可以把里面内容提取成hooks使用,我的需求是通过图标复制所以如此做),由于测试了uni.setClipboardData()实际上不兼容H5,会报“复制失败请重新复制”的提示,所以添加代码使其兼容H5

一、创建组件

我是在/components/clip/index.vue该路径下进行创建,可自行发挥

<template><u-icon name="copy" custom-prefix="custom-icon" size="35"></u-icon>
</template><script lang='ts' setup>
import { ref, reactive, computed, onMounted, watch } from 'vue'// 此方法最好放在点击事件中
const setCopy = (content: string) => {// 使用#ifdef H5和#endif控制各端调用情况// 该方法不支持h5//#ifndef H5uni.setClipboardData({data: String(content), // 必须字符串success: function () {console.log('success');}});//#endif// h5端赋值方法,使用创建节点// #ifdef H5if (!document.queryCommandSupported('copy')) { // 兼容某些浏览器的判断console.log('该浏览器不支持')}let textarea = document.createElement("textarea") as anytextarea.value = contenttextarea.readOnly = "readOnly"document.body.appendChild(textarea)textarea.select() // 选择对象textarea.setSelectionRange(0, content.length) // 核心let result = document.execCommand("copy") // 执行浏览器复制命令if (result) {uni.showToast({title: '复制成功',duration: 2000});}textarea.remove()// #endif
}// 暴露方法给父组件
defineExpose({ setCopy })
</script><style lang='scss' scoped>@import "./iconfont.css";</style>
二、调用组件及其方法
<template><!-- 先使用@click,若不成功改用@tap,因为微信小程序中可能不生效 --><clip @tap="handleClickCopy('888888')" ref="clipIcon"></clip>
</template><script setup lang="ts">
import { ref, reactive, Ref } from "vue";
import clip from '@/components/clip/index.vue'// vue3通过ref获取,等同于vue2的refs方法,若有需要自行改写
const clipIcon: Ref<any> = ref(null)
const handleClickCopy = (data: string) => {clipIcon.value.setCopy(data)
}
</script>
三、多端调用的效果展示

复制成功后直接用手机的粘贴或者电脑的粘贴即可

四、参考链接地址

1、官方参考文档:https://uniapp.dcloud.net.cn/api/system/clipboard.html#getclipboarddata
2、H5端兼容代码参考文档:https://blogs.kongjz.com/details/44

五、补充:样式穿透在微信小程序端不生效的解决方案

使用样式穿透后,H5端生效,微信小程序端不生效,需要在进行样式穿透的页面添加如下代码,因为我是用<script setup lang="ts"></script>,所以需要另起一行添加如下代码,如果不使用setup语法糖或者vue2的开发,只需要在顶层添加即可,可以参考该文档:https://blog.csdn.net/lingliu0824/article/details/123178465

<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({// 在小程序中穿透,不支持setup语法糖了options: { styleIsolation: 'shared' },
})
</script><script setup lang="ts">...<script>

uniapp实现复制功能相关推荐

  1. uniapp一键复制功能效果demo(整理)

    <template><view><view @click="copy('2022093987615371')"></view>< ...

  2. uniapp复制功能

    思路:使用uniapp的uni.setClipboardData(设置系统剪贴板的内容)和uni.getClipboardData(获取系统剪贴板内容) <template><vie ...

  3. uniapp 微信小程序 点击按钮实现复制功能

    copyNumHandle(){uni.setClipboardData({data: this.formdata.orderNum, // data的值为你要复制的内容success: res =& ...

  4. uniapp + HbuliderX更新日志

    HBuilder X - Release Notes ====================================== 3.2.3.20210825 [uni-app插件] App平台 修 ...

  5. uni-app - 实现全屏自适应且不变形背景大图,设置一张图片占满全屏(根据手机或电脑尺寸自动拉伸背景图像),用于页面是一张平铺的大图做背景的情况,全端兼容

    前言 网上的很多文章的教程都有一定问题,要么不会自动适应手机尺寸,要么写一堆 js 判断手机宽高,兼容性极差且代码臃肿. 在 uni-app 项目中,经常遇到 H5 活动页.营销页.图片背景元素点缀等 ...

  6. uniapp - 通讯聊天功能示例源代码,类似微信聊天 / 电商淘宝京东 “买卖双方“ 消息沟通系统 / 各大应用简易聊天沟通的功能插件(超级详细代码和注释,开箱即用)全端兼容 H5 App 小程序

    前言 网上的教程鱼龙混杂太乱了,并且全都是各种引入关系.各种冗余代码,拿过来后根本无法进行改造. 本文实现了 uniapp 全平台兼容的 "1对1 即时聊天沟通" 的聊天窗口模板, ...

  7. uniapp - [全端兼容] 音乐列表播放与切换歌曲,点击列表播放 mp3 wav 音乐文件(支持点击播放与暂停,图标切换 / 流畅的切换音频、暂停保留歌曲及恢复功能等详细教程)

    前言 网上教程都太乱了,各种不兼容.功能缺陷等问题,我们很难对示例进行改造. 本文站在新手角度,实现了 uniapp 全平台兼容,歌曲音乐列表点击播放与暂停.切换歌曲等功能(音乐列表多个音频切换), ...

  8. uniapp 复制到剪切板 四端适配

    记得很早的时候实现过一次,只不过那次是 纯 vue 实现的 h5+,但是想用在 uniapp中 还是不行.有些地方不能用!不过在 App 中的方法还是可以使用的: Vue 复制内容到系统剪切板_唐僧的 ...

  9. uniapp 鸿蒙,关于前端:uniapp项目安装运行操作手册

    一,装置运行环境 1.下载node.js node.js下载链接node.js 请下载长期反对版. 2.装置node.js 装置教程百度可查这里就不具体阐明了,装置教程地址链接 3.验证node是否装 ...

  10. uniapp 中如何使用echart_uniapp中如何引用echarts

    uniapp引用echarts的方法:1.通过uni-app官网直接安装echarts插件生成echarts项目模板:2.创建一个新的hello uni-app项目模板:3.把echarts放到com ...

最新文章

  1. 关于Remote Desktop Users组
  2. 奥林匹克数学竞赛教练员汇编,最牛奥数资料全集!
  3. js原生带缩略图的图片切换效果
  4. jwt, json web token
  5. MySQL利用磁盘缓存写入_MySQL写入缓冲区在数据库中的作用( Change Buffer )
  6. CUDA:在GPU上实现核函数的嵌套以及编译运行
  7. 匹配中文字符的正则表达式
  8. java做节奏大师,《节奏大师》高手必修之路 亲测攻略_iOS游戏频道_97973手游网
  9. 点餐系统+小程序常见问题解决(2022年最新版)
  10. bt5重启网卡命令_BackTrack5(BT5)安装教程及BT5支持网卡列表
  11. 用火狐浏览器看中一段代码是复制外部html还是复制内部html,Firefox火狐浏览器漏洞-远程代码执行全过程(附Poc)...
  12. 【生活】换手机号需要更改哪些绑定
  13. speedoffice文档如何在方框内打钩
  14. Mac电脑如何实现Word一键转PPT
  15. 闪迪u盘不能识别好办法_U盘不能识别怎么办 U盘无法识别的7种解决方法
  16. ubuntu中如何修改计算机名字
  17. 详解created和mounted区别与使用场景
  18. [论文阅读]Which Is Plagiarism: Fashion Image Retrieval Based on Regional Representation for Design Prote
  19. 手机电子邮件用outlook登录
  20. 无tensorflow,在pytorch下使用tensorboard可视化工具报错:Could not load dynamic library ‘cudart64_110.dll‘; dlerror

热门文章

  1. 在某软国际的那些日子
  2. 微信小程序报错“对应的服务器证书无效”
  3. android椭圆形形框_什么是计算机硬件上的椭圆形Kong?
  4. 会话管理:Cookie和Session
  5. 国家码信道顺从表(含数据库和配置)
  6. Android仿支付宝支付密码输入框
  7. 28KHZ/40KHZ老款超声波开关线路板
  8. ffmpeg隔几秒取一帧
  9. java 获取视频第一帧 | Java工具类
  10. 北京农村商业银行:应用质量掘金再造“探秘”之旅