vue3使用clipboard实现复制功能

安装依赖

npm install clipboard --save

使用示例

<button class="copy" data-clipboard-text="复制内容" @click="copy">复制</button>

import Clipboard from 'clipboard'

const copy = () => {
    let clipboard = new Clipboard('.copy')
    clipboard.on('success', (e) => {
        console.log('复制成功', e)
        // 释放内存
        clipboard.destroy()
    })
    clipboard.on('error', (e) => {
        // 不支持复制
        console.log('该浏览器不支持自动复制', e)
        // 释放内存
        clipboard.destroy()
    })
}

<button class="copy" @click="handleCopy(state.code)">复制</button>

import { reactive } from 'vue'

const state = reactive( {
code : '<el-row>\n' +
    '  <el-col :span="24">\n' +
    '    <el-card class="box-card">\n' +
    '      <template #header>\n' +
    '        <div class="card-header">\n' +
    '          <span>卡片名称</span>\n' +
    '          <el-button class="button" type="text">更多</el-button>\n' +
    '        </div>\n' +
    '      </template>\n' +
    '      <div class="text item">卡片内容</div>\n' +
    '    </el-card>\n' +
    '  </el-col>\n' +
    '</el-row>'
})

const handleCopy = async (code) => {
  let clipboard = new Clipboard('.copy', {
    text: function () {
      return code
    }
  })
  await clipboard.on('success', (e) => {
    console.log('复制成功', e)
    // 释放内存
    clipboard.destroy()
  })
  await clipboard.on('error', (e) => {
    // 不支持复制
    console.log('该浏览器不支持自动复制', e)
    // 释放内存
    clipboard.destroy()
  })
}


注意: data-clipboard-text中为复制内容,class名必须与new Clipboard()中的class名相同。 阻止冒泡@click.stop无法使用clipboard进行复制,改为使用其他方法实现。

const copy = (data: string) => {
     let url = data
     let oInput = document.createElement('textarea')
     oInput.value = url
     document.body.appendChild(oInput)
     oInput.select() // 选择对象;
     document.execCommand('Copy') // 执行浏览器复制命令
     console.log('复制成功')
     oInput.remove()
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中实现复制功能的自定义指令可以使用vue-clipboard3插件。这个插件是Vue3版本的vue-clipboard2插件的升级版,可以方便地实现将内容复制到剪贴板的功能。 要在Vue3中使用vue-clipboard3插件,首先需要安装它作为项目的依赖项。然后,在需要使用复制功能的组件中,使用v-copy指令来绑定相应的事件。 例如,可以在组件的模板中使用v-copy指令,并将要复制的内容作为指令的参数传入。然后,在指令被触发时,调用vue-clipboard3插件提供的API来实现复制功能。具体的代码可以类似下面这样: ```html <template> <button v-copy="copyText">复制内容</button> </template> <script> import { useClipboard } from 'vue-clipboard3'; export default { data() { return { copyText: '要复制的内容', } }, directives: { copy: useClipboard, }, } </script> ``` 在这个示例中,当点击按钮时,v-copy指令会将copyText的值复制到剪贴板上。 使用vue-clipboard3插件可以方便地实现Vue3中复制内容到剪贴板的功能。通过使用v-copy指令,我们可以将复制功能应用到单根组件上,实现Vue2相似的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3.0 如何自定义指令](https://blog.csdn.net/ww_5211314/article/details/126935476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue3自定义指令-10个常见的实用指令,带详细讲解,快拿去收藏!!!](https://blog.csdn.net/weixin_36813246/article/details/126864742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值