关于clipboard.js 的使用,完成文本的复制

clipboard.js 是一个轻量级的库,用于方便地实现文本复制功能。它支持原生JS、jQuery和Vue等环境。在使用中可能出现的问题包括:多次点击导致复制功能重复调用,以及Vue中首次点击需要两次才能生效。解决方法是在成功或失败回调中销毁实例,如`clipboard.destroy()`。示例代码展示了如何在不同环境下配置和使用clipboard.js。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clipboard.js 主要用来对节点内的文本完成复制。支持原生js的调用

官网:https://clipboardjs.com/
官方js:https://clipboardjs.com/dist/clipboard.min.js

data-clipboard-actioncut剪切
copy复制
data-clipboard-target类名/id名要复制的节点
data-clipboard-text文本内容要复制的文本内容

1. js调用

虽然是用的原生js,但是类名传递依然可以使用“.btn”这种方式,id名同理。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div id="copy">copy</div>
  <a onclick="getCopy()" class="btn" data-clipboard-target="#copy">button</a>
  <script>
    function getCopy() {
      var clipboard = new ClipboardJS('.btn');

      clipboard.on('success', function (e) {
        console.info('Action:', e.action);
        console.info('Text:', e.text);
        console.info('Trigger:', e.trigger);
        //e.clearSelection(); //注释可实现复制成功后,文本获得焦点
        clipboard.destroy()
      });

      clipboard.on('error', function (e) {
        console.error('Action:', e.action);
        console.error('Trigger:', e.trigger);
        clipboard.destroy()
      });
    }
  </script>
  <script src="./clipboard.min.js" type="text/javascript" charset="utf-8"></script>
</body>

</html>

2. jquery同理 

3. vue调用

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script src="./vue.global.prod.min.js"></script>

  <title>Document</title>
</head>

<body>
  <div id="app">
    <div id="copy">copy</div>
    <a @click="getCopy()" class="btn" data-clipboard-target="#copy">button</a>
  </div>
  <script src="./clipboard.min.js" type="text/javascript" charset="utf-8"></script>
  <script>
    Vue.createApp({
      methods: {
        getCopy() {
          var clipboard = new ClipboardJS('.btn');
          clipboard.on('success', function (e) {
            console.info('Action:', e.action);
            console.info('Text:', e.text);
            console.info('Trigger:', e.trigger);
            //e.clearSelection();
            clipboard.destroy()
          });

          clipboard.on('error', function (e) {
            console.error('Action:', e.action);
            console.error('Trigger:', e.trigger);
            clipboard.destroy()
          });
        }
      }
    }).mount("#app")
  </script>
</body>

</html>

问题:

1. 点击多次时,复制功能重复调用多次

        这是因为调用后没有销毁实例,需要再调用clipboard.destory()销毁实例

2. vue首次点击时需要点击两次才能复制成功

         在vue中使用clipboard.js,需要点击两次才能复制成功的问题_MilkyMoon的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值