Vue3实现复制功能

npm add vue-clipboard3 -D
<template>
    ...
    <el-button link class="el-button--text" @click="onCopy">复制</el-button>
    ...
</template>
<script setup>
import { ref } from 'vue'
import { ElMessage } from 'element-plus'
import clipboard3 from 'vue-clipboard3'

// 解构方法
const { toClipboard } = clipboard3()

// 要复制的内容
let content = ref('')

const onCopy = async() => {
    try {
        await toClipboard(content.value)
        ElMessage({
            type: 'success',
            message: '复制成功!'
        })
    } catch (err) {
        console.error(err)
        ElMessage({
            type: 'error',
            message: '复制失败,请手动复制'
        })
    }
    
}
</script>

好用哦!!!!!

Vue3项目中实现“点击即复制功能,我们可以借助原生JavaScript的`Clipboard API`或者传统的`document.execCommand(&#39;copy&#39;)`方法。以下是具体的实现步骤: ### 实现方案 #### 方法一: 使用 Clipboard API (推荐) ```vue <template> <button @click="handleCopy">点击复制</button> </template> <script setup> import { ref } from &#39;vue&#39; const textToCopy = ref("这是需要复制的内容") function handleCopy() { navigator.clipboard.writeText(textToCopy.value).then(() => { alert("内容已成功复制到剪贴板") }).catch(err => { console.error("无法复制文本", err); }); } </script> ``` **说明**: `navigator.clipboard.writeText()` 是现代浏览器提供的直接操作剪贴板的方法。 --- #### 方法二: 兼容性更好的 document.execCommand 方式 如果目标设备或环境尚未完全支持`Clipboard API`,可以考虑使用传统的方式: ```vue <template> <div> <input type="text" id="textInput" :value="textToCopy"/> <button @click="oldHandleCopy">点击复制(兼容模式)</button> </div> </template> <script setup> import { ref } from &#39;vue&#39; const textInputRef = ref(null) // 要复制的文字 const textToCopy = "这是一段文字" function oldHandleCopy() { const inputElement = textInputRef.value; if(inputElement) { // 将输入框内的值选中并执行拷贝命令 inputElement.select(); inputElement.setSelectionRange(0,9999); // 对于移动设备的支持处理 document.execCommand(&#39;copy&#39;); alert("已复制"); } } </script> ``` **注意**: 这种方式已被部分主流浏览器逐步废弃,建议仅用于低版本浏览器兼容场景。 --- ### 总结: 以上两种方式都可以满足需求,“Clipboard API”更简洁安全;而 “execCommand” 则有更好向后兼容性。实际选用需根据项目技术栈、目标用户群体等因素综合判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值