clipboard.js 實現復制 (解決第一次點擊不生效,第二次才生效的問題)


clipboard.js 我用於實現 點擊復制,根據官方文檔,我如下寫了一個例子,如下:

<template>
  <div class="hello">
    <button @click="copy1">我就是要復制你</button>
    <button @click="copy2">我就是要復制你誰誰誰誰誰誰</button>
  </div>
</template>

<script>
import Clipboard from "clipboard";
export default {
  name: "HelloWorld",
  data() {
    return {
      msg: "Welcome to Your Vue.js App"
    };
  },
  created() {},
  methods: {
    copy1(e) {
      console.log("復制", e.target);
      let xxx = new Clipboard(e.target, {
        text: () => 3444444444444
      });
      console.log("0000",xxx)
      xxx.on("success", function(e) {
        console.log("成功")
        xxx.destroy()
      });
      xxx.on("error", function(e) {
        console.log("失敗")
        xxx.destroy()
      });
    },
    copy2() {
      console.log("復制");
    }
  }
};
</script>

但是,測試的時候發現,第一次點擊無效,要點擊第二次才生效,於是百度,結果百度出了一些邪門歪道,說啥用onmousemove 來觸發第一次,我只能說,拒絕這種行為,經過我修改,代碼如下

<template>
  <div class="hello">
    <button @click="copy1($event)">我就是要復制你</button>
    <button>我就是要復制你誰誰誰誰誰誰</button>
  </div>
</template>

<script>
import clipboard from "../utils/clipboard";

export default {
  name: "HelloWorld",
  data() {
    return {
      msg: "Welcome to Your Vue.js App"
    };
  },

  methods: {
    copy1(event) {
      clipboard("1234", event);
    }
  }
};
</script>

另外新建一個js

import Clipboard from 'clipboard'


export default function handleClipboard(text,event){
    const clipboard =  new Clipboard(event.target,{
        text:()=>text
    })
    clipboard.on('success',() => {
        clipboard.destroy()
    })
    clipboard.on('error',() =>{
        clipboard.destroy()
    })
    clipboard.onClick(event)
}

  這樣就可以了,哦哦哦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM