Vue一键复制文本(clipboard)

一键复制文本(clipboard)


1. 使用cilpboard实现一键复制文本

首先安装clipboard

npm install clipboard --save

引入

import clipboard from ‘clipboard’;

注册

Vue.prototype.clipboard = clipboard;

要复制的区域代码

<div class="tkl-content" id="copytkl">
  复制框内文字,打开【手机淘宝】即可领券购买。¥a1cxYcOA08¥
</div>

点击事件所在元素
设置操作类型以及要复制的目标元素

<div class="tkl-fuzhi" @click="copyLink" data-clipboard-action="copy"  data-clipboard-target="#copytkl">
  一键复制
</div>

js代码
new this.clipboard(".tkl-fuzhi");指的是事件所在元素,并非要复制的元素

copyLink() {
  let _this = this;
  let clipboard = new this.clipboard(".tkl-fuzhi");
  clipboard.on('success', function () {
    window.console.log('00')
  });
  clipboard.on('error', function () {
    _this.$toast("复制失败")
  });
}

2. clipboard.js 一键复制 官网

参考博客
在通过如下方式绑定元素来复制的时候,在Android上是没问题的,在IOS下多次复制会出现复制失败的现象

<!--复制淘口令弹框-->
  <div class="taolouling" ref="tkl">
    <div class="taokouling-center">
      <div class="tkl-top-title">
        复制淘口令购买
</div>
<div class="tkl-content" id="copytkl">
  复制框内整段文字,打开【手机淘宝】即可领券购买。{{item.code}}
</div>
<div class="tkl-fuzhi" @click="copyLink" data-clipboard-action="copy" data-clipboard-target="#copytkl">
    一键复制
</div>
</div>
<div class="tkl-cancel" @click="cancelFuzhi">
  <i class="iconfont icon-x"></i>
</div>
</div>
let _this = this;
let clipboard = new this.clipboard(".tkl-fuzhi");
clipboard.on('success', function () {
  if (_this.item.code.length > 0) {
    _this.$toast({
      message: `${_this.item.code}淘口令已复制,请打开【手机淘宝】领券购买`,
      duration: 1800
    });
  } else {
    _this.$toast({
      message: `请在【倍速课堂】APP首页倍速小店购买`,
      duration: 1800
    });
  }

  _this.$refs.tkl.style.display = 'none';
});
clipboard.on('error', function () {
  _this.$toast("复制失败")
});

做一下修改,复制的文本不在另一个组件上,直接从属性中复制

<!--复制淘口令弹框-->
        <div class="taolouling" ref="tkl">
            <div class="taokouling-center">
                <div class="tkl-top-title">
                    复制淘口令购买
                </div>
                <div class="tkl-content" id="copytkl">
                    复制框内整段文字,打开【手机淘宝】即可领券购买。{{item.code}}
                </div>
                <div class="tkl-fuzhi" @click="copyLink"  :data-clipboard-text="item.code">
                    一键复制
                </div>
            </div>
            <div class="tkl-cancel" @click="cancelFuzhi">
                <i class="iconfont icon-x"></i>
            </div>
        </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值