vue如何实现点击复制粘贴功能?

5,185 阅读1分钟

vue如何实现点击复制粘贴功能?

第一种方法

html

 <el-form-item label="App ID">
     <span ref="copy" prop="appId">{{ tableList.appId }}</span>
     <span class="showtimeone" @click="CopyUrl()">复制</span>
 </el-form-item>

js

CopyUrl(){
      window.getSelection().removeAllRanges()
      const copyDOM = this.$refs.copy
      const range = document.createRange()
      range.selectNode(copyDOM)
      window.getSelection().addRange(range)
      try {
       let successful = document.execCommand("copy");
        this.utilHelper.commonFn.toast(
          `${successful ? "复制成功" : "您的手机不支持自动复制,请手动复制~"}`
        );
      } catch (err) {
        console.log('无法复制')
      }
      window.getSelection().removeAllRanges()
    }

原文

第二种方法

利用插件: vue下想要实现复制功能有很多种方法,比如vue-clipboard2等。

利用原生方法:

但是如果你不想使用插件,我们也可以利用document.execCommand来实现此功能。

简介: 当一个HTML文档切换到设计模式 designMode时,文档对象暴露 execCommand 方法,该方法允许运行命令来操纵可编辑区域的内容。

使用:

methods: {
    CopyUrl(){
      let url = document.querySelector('#copyObj');
      url.select(); // 选择对象
      document.execCommand("Copy");
    },
}

方法如上,我们需要复制的目标,比如以下的input标签

<input type="text" value="https://blog.csdn.net/Tomhs3000" id="copyObj">

此处input的value也可以直接用v-model绑定数据

注意事项

需要注意的是:

1、input 不可以添加 disabled 属性;

2、input的 width 和 height 不能为0;

3、input框不能有hidden属性;

但是可以设置opacity。

原文