解决vue复制插件clipboard.js点击两次才能复制成功的问题

封装clipboard.js:

import Clipboard from "clipboard"
import Vue from "vue"

function clipboardSuccess() {
  Vue.prototype.$message.success("复制成功")
}

function clipboardError() {
  Vue.prototype.$message.error("复制失败")
}

export function copy(text, event, onSuccess, onError) {
  event = event || {}
  const clipboard = new Clipboard(event.target, {
    text: () => text
  })
  clipboard.on('success', () => {
    onSuccess ? onSuccess() : clipboardSuccess()
    clipboard.off('error')
    clipboard.off('success')
    clipboard.destroy()
  })
  clipboard.on('error', () => {
    onSuccess ? onError() : clipboardError()
    clipboard.off('error')
    clipboard.off('success')
    clipboard.destroy()
  })
  clipboard.onClick(event)
}

只需要增加 clipboard.onClick(event) 这行代码就行了,网上很多办法都写的乱七八糟的。

在vue文件中只需要引入封装好的js文件进行调用就可以了。

<i class="el-icon-copy-document" @click="handleCopy(alertTitle,$event)"></i>

import { copy } from "@/utils/clipboard";

handleCopy(text, e) {
  copy(text, e);
},

 

posted @ 2021-09-23 18:49  wjs0509  阅读(1314)  评论(0编辑  收藏  举报