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>

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

总结

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

相关文章

  • vue3+vite项目运行后实现自动在浏览器打开

    vue3+vite项目运行后实现自动在浏览器打开

    文章介绍了如何使用Vue 3和Vite创建项目,并提供了一个简单的步骤指南,包括在package.json文件中进行配置,希望这篇经验分享对大家有所帮助,并鼓励大家支持脚本之家
    2026-01-01
  • Vue v-for中:key中item.id与Index使用的区别解析

    Vue v-for中:key中item.id与Index使用的区别解析

    这篇文章主要介绍了Vue v-for中:key中item.id与Index使用的区别解析,推荐使用【:key="item.id"】而不是将数组下标当做唯一标识,前者能做到全部复用,本文给大家详细讲解,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • Vue3中引入SCSS和LESS依赖的基本步骤和注意事项

    Vue3中引入SCSS和LESS依赖的基本步骤和注意事项

    我们项目开发中经常遇到样式里面会使用less和scss写法, less,scss和stylus都是css的预处理器,这篇文章主要给大家介绍了关于Vue3中引入SCSS和LESS依赖的基本步骤和注意事项,需要的朋友可以参考下
    2024-05-05
  • 创建项目及包管理yarn create vite源码学习

    创建项目及包管理yarn create vite源码学习

    这篇文章主要为大家介绍了创建项目及包管理yarn create vite源码学习分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Vue两种组件类型:递归组件和动态组件的用法

    Vue两种组件类型:递归组件和动态组件的用法

    这篇文章主要介绍了Vue两种组件类型:递归组件和动态组件的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue Router组合布局用法详解

    Vue Router组合布局用法详解

    今天我们用一种新的布局方式,使用路由视图来实现布局样式,本文将给大家介绍如何使用Vue Router组合布局,文中有详细的代码示例供大家参考,感兴趣的同学可以跟着小编一起学习
    2023-05-05
  • Vue如何使用patch-package优雅地修改第三方依赖库

    Vue如何使用patch-package优雅地修改第三方依赖库

    在前端开发中,有时我们需要对第三方依赖库进行修改以满足项目需求,patch-package 是一个优秀的工具,可以帮助我们优雅地管理这些修改,下面我们来看看具体操作吧
    2025-03-03
  • vue配置文件实现代理v2版本的方法

    vue配置文件实现代理v2版本的方法

    这篇文章主要介绍了vue配置文件实现代理v2版本的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • vue3父子组件通信、兄弟组件实时通信方式

    vue3父子组件通信、兄弟组件实时通信方式

    这篇文章主要介绍了vue3父子组件通信、兄弟组件实时通信方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Vue 重置data的数据为初始状态操作

    Vue 重置data的数据为初始状态操作

    这篇文章主要介绍了Vue 重置data的数据为初始状态操作方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论