vue点击实现复制

首先先安装模块工具

cnpm install clipboard --save

在当前页面引入模块

import Clipboard from 'clipboard'; 

使用:
html代码

<div class="box">我的邀请码:<span class="inviteCode" >XF684V1G</span><span class="copy order-id" :data-clipboard-text="'XF684V1G'" @click="copy">复制</span></div>

页面样式


点击复制之后的js

copy () {
      var clipboard = new Clipboard('.order-id') //绑定数据标签的类名
      clipboard.on('success', e => {
        Toast('邀请码已复制');
        // 释放内存
        clipboard.destroy()
      })
      clipboard.on('error', e => {
        console.log('该浏览器或手机权限不支持复制功能');
        // 释放内存
        clipboard.destroy()
      })
    },

注意:order-id类名 和 :data-clipboard-text 建议绑定在复制按钮上

 

如果以上方法复制无效,请看下面最后再提供一种

 


import i18n from 'i18next';
import { message } from 'antd';

export const Replicate = async (value) => {
    const target = document.createElement('input'); //创建input节点
    target.value = value; // 给input的value赋值
    target.style.position = 'absolute';
    target.style.top = '-99999px';
    document.body.appendChild(target); // 向页面插入input节点
    target.select(); // 选中input
    target.setSelectionRange(0, 99999); // 兼容移动设备
    try {
        await document.execCommand('Copy'); // 执行浏览器复制命令
        // 移除虚拟input元素
        document.body.removeChild(target);
        message.success(i18n.t('copySuccessfully'));
    } catch {
        message.error(i18n.t('Copying_is_not_supported'));
    }
};
 

 

posted @ 2021-04-28 13:56  龙卷风吹毁停车场  阅读(302)  评论(0编辑  收藏  举报