vue实现点击复制文本到剪贴板方式

 更新时间:2025年10月15日 08:58:08   作者:你的眼睛會笑  
文章介绍了四种在Vue中实现复制文本到剪贴板的方法:1.使用navigator.clipboard.writeText(需要在安全域下使用);2.使用即将废弃的execCommand方法;3.通过引入vue-clipboard2库;4.使用clipboard.js库,推荐使用第一种或第三种方法

vue点击复制文本到剪贴板 共四种方法

1. navigator.clipboard.writeText

该方法需要在安全域下才能够使用,比如:https 协议的地址、127.0.0.1、localhost

<template>
  <div>
    <el-button type="primary" @click="btn1">复制方法一</el-button>
    <div style="margin-top: 50px">{{ message }}</div>  // 复制的内容
  </div>
</template>
<script>
export default {
  data() {
    return {
      message: "床前明月光",
    };
  },

  methods: {
    // 方法一
    btn1() {
      // navigator.clipboard.writeText 该方法需要在安全域下才能够使用,比如:https 协议的地址、127.0.0.1、localhost
      navigator.clipboard
        .writeText(this.message)
        .then(() => {
          this.$message.success("复制成功");
        })
        .catch((err) => {
          // 复制失败
          console.error("复制失败");
        });
    },
  },
};
</script>

2. execCommand方法 

即将被废弃

<template>
  <div>
    <el-button type="primary" @click="btn2">复制方法二</el-button>
    <div style="margin-top: 50px">{{ message1 }}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      message1: "疑是地上霜",
    };
  },
  methods: {
    // 方法二  execCommand方法即将被废弃
    btn2() {
      let input = document.createElement("input");
      document.body.appendChild(input);
      input.value = this.message1; // 此处为需要复制的文本变量
      input.focus();
      input.select();
      try {
        let result = document.execCommand("copy");
        document.body.removeChild(input);
        if (!result) {
          console.error("复制失败");
        } else {
          this.$message.success("复制成功");
        }
      } catch (e) {
        document.body.removeChild(input);
        alert("当前浏览器不支持复制功能,请检查更新或更换其他浏览器操作");
      }
    },
  },
};
</script>

3. 使用vue-clipboard2库

安装 npm install --save vue-clipboard2

main.js 中引入


<template>
  <div>
    <el-button
      type="primary"
      v-clipboard:copy="message2"
      v-clipboard:success="onCopy"
      v-clipboard:error="onError"
      >复制方法三</el-button
    >
    <div style="margin-top: 50px">{{ message2 }}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      message2: "举头望明月",
    };
  },
  methods: {
    // 方法三
    // 使用vue-clipboard2库
    // 安装 npm install --save vue-clipboard2
    // 在main.js中引入
    // import VueClipboard from 'vue-clipboard2';
    // Vue.use(VueClipboard);
    onError() {
      console.error("复制失败");
    },
    // 复制
    onCopy() {
      this.$message.success("复制成功");
    },
  },
};
</script>

4. 使用clipboard.js库

npm install clipboard --save

当前文件引入 import ClipboardJS from "clipboard";

<template>
  <div>
    <el-button type="primary" class="btn">复制方法四</el-button>
    <div style="margin-top: 50px">{{ message3 }}</div>
  </div>
</template>
<script>
import ClipboardJS from "clipboard";
export default {
  data() {
    return {
      message3: "低头思故乡",
    };
  },
  mounted() {
    // 方法四
    // cnpm install clipboard --save
    // 当前文件引入 import ClipboardJS from "clipboard";
    let that = this;
    const clipboard = new ClipboardJS(".btn", {
      text: function () {
        return that.message3;
      },
    });
    clipboard.on("success", function (e) {
      console.log("复制成功");
    });
    clipboard.on("error", function (e) {
      console.log("复制失败");
    });
  }
};
</script>

推荐使用第一种或者第三种,请根据自身需求选择适当的方法!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue.js选中动态绑定的radio的指定项

    vue.js选中动态绑定的radio的指定项

    这篇文章主要介绍了vue.js选中动态绑定的radio的指定项,需要的朋友可以参考下
    2017-06-06
  • vue实现简易音乐播放器

    vue实现简易音乐播放器

    这篇文章主要为大家详细介绍了vue实现简易音乐播放器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • vue 当中组件之间共享数据的实现方式

    vue 当中组件之间共享数据的实现方式

    这篇文章主要介绍了vue 当中组件之间共享数据的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue实现的下拉框功能示例

    vue实现的下拉框功能示例

    这篇文章主要介绍了vue实现的下拉框功能,涉及vue.js数据读取、遍历、事件响应等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • vue-element-admin按钮级权限管控的实现

    vue-element-admin按钮级权限管控的实现

    开发离不开权限,不同的用户登录,根据不同的权限,可以访问不同的管理目录,本文主要介绍了vue-element-admin按钮级权限管控的实现,具有一定的参考价值,感兴趣的可以了解一下
    2022-04-04
  • vue element修改el-select控件长度style=“width:XXpx“不生效的解决

    vue element修改el-select控件长度style=“width:XXpx“不生效的解决

    这篇文章主要介绍了vue element修改el-select控件长度style=“width:XXpx“不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • ant design 日期格式化的实现

    ant design 日期格式化的实现

    这篇文章主要介绍了ant design 日期格式化的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Vue3自定义指令完全指南(附详细代码)

    Vue3自定义指令完全指南(附详细代码)

    这篇文章主要介绍了Vue3自定义指令的相关资料,Vue3自定义指令优化了生命周期钩子,提供了更灵活的DOM操作方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • vue 如何设置背景颜色及透明度

    vue 如何设置背景颜色及透明度

    这篇文章主要介绍了vue 设置背景颜色及透明度的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • vue canvas绘制矩形并解决由clearRec带来的闪屏问题

    vue canvas绘制矩形并解决由clearRec带来的闪屏问题

    这篇文章主要介绍了vue canvas绘制矩形并解决由clearRec带来的闪屏问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09

最新评论