技术栈: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. 华为4G路由器成软银快速部署宽带业务新利器
  2. h5实现网页内容跟随窗口大小移动_HTML5 移动页面自适应手机屏幕四类方法
  3. java 捕获 nullpointerexception,Java 空检查链与捕获NullPointerException
  4. sqlite like通配符使用 -转
  5. 帆软报表使用心得(转)
  6. 【智驾深谈】从滴滴Uber合并看中国智能出行“三国演义”
  7. 设计模式之----依赖倒置(Dependency inversion principle)的理解
  8. python调用百度云文字识别
  9. 【electron】window.require is not a function
  10. 如何写一个仿真文件——testbench
  11. 对于大学工作规划和面试前准备
  12. 工业云平台大数据统计分析有什么优势?
  13. html5 打字机效果,使用JavaScript制作打字机文本效果
  14. AI高考的信息检索策略
  15. GeoStru.CVSoil.v2014.7.2.47 1CD
  16. mLife | 朱永官院士提出生态系统微生物组学
  17. 关于一个读取xml文件的问题和解决
  18. 100天搞定机器学习:PyYAML基础教程
  19. Q3c「最大可以支持多大容量的硬盘?」AirDisk
  20. 怎么能把Excel数据导入到这个水经注软件里?

热门文章

  1. 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(二)
  2. HTTPS(三)之JAVA 不校验HTTPS服务器证书
  3. 北航大学计算机学院新媒体艺术系,本科优秀毕业论文参考-北航新媒体与艺术学院-北京航空航天大学.doc...
  4. 怎样才能让自己的QQ号永远不会被盗?
  5. 利用Chrome浏览器的开发者工具控制网速
  6. python中take函数_Python Pandas Series.take()用法及代码示例
  7. 深度学习方法在糖尿病视网膜病变诊断中的应用
  8. 云计算与大数据概论第十一周(2)
  9. 计算机桌面图标多一个箭头,怎么去掉电脑桌面图标箭头(一个小妙招解决win图标小箭头)...
  10. 获取input输入值和获取form表单中的组件输入值区别