当前位置:首页 > VUE

vue 实现点击复制 代码

2026-02-23 07:49:15VUE

Vue 实现点击复制功能

使用 Clipboard API

现代浏览器提供了 Clipboard API,可以直接操作剪贴板内容。该方法无需额外依赖,兼容性良好。

<template>
  <button @click="copyText">复制文本</button>
</template>

<script>
export default {
  methods: {
    async copyText() {
      const textToCopy = '需要复制的文本内容';
      try {
        await navigator.clipboard.writeText(textToCopy);
        alert('复制成功');
      } catch (err) {
        console.error('复制失败:', err);
      }
    }
  }
};
</script>

使用 document.execCommand

对于不支持 Clipboard API 的旧版浏览器,可以使用传统的 document.execCommand 方法。

<template>
  <button @click="copyTextLegacy">复制文本</button>
</template>

<script>
export default {
  methods: {
    copyTextLegacy() {
      const textToCopy = '需要复制的文本内容';
      const textarea = document.createElement('textarea');
      textarea.value = textToCopy;
      document.body.appendChild(textarea);
      textarea.select();
      document.execCommand('copy');
      document.body.removeChild(textarea);
      alert('复制成功');
    }
  }
};
</script>

使用第三方库 vue-clipboard2

如果需要更简单的实现方式,可以安装 vue-clipboard2 库。

vue 实现点击复制 代码

安装依赖:

npm install vue-clipboard2

使用示例:

vue 实现点击复制 代码

<template>
  <button v-clipboard:copy="textToCopy">复制文本</button>
</template>

<script>
import Vue from 'vue';
import VueClipboard from 'vue-clipboard2';

Vue.use(VueClipboard);

export default {
  data() {
    return {
      textToCopy: '需要复制的文本内容'
    };
  }
};
</script>

动态绑定复制内容

可以根据需要动态绑定要复制的内容。

<template>
  <input v-model="dynamicText" />
  <button @click="copyDynamicText">复制输入框内容</button>
</template>

<script>
export default {
  data() {
    return {
      dynamicText: ''
    };
  },
  methods: {
    async copyDynamicText() {
      try {
        await navigator.clipboard.writeText(this.dynamicText);
        alert('复制成功');
      } catch (err) {
        console.error('复制失败:', err);
      }
    }
  }
};
</script>

处理复制反馈

为了提升用户体验,可以添加复制成功或失败的反馈提示。

<template>
  <button @click="copyWithFeedback">复制文本</button>
  <p v-if="copyStatus">{{ copyStatus }}</p>
</template>

<script>
export default {
  data() {
    return {
      copyStatus: ''
    };
  },
  methods: {
    async copyWithFeedback() {
      try {
        await navigator.clipboard.writeText('需要复制的文本');
        this.copyStatus = '复制成功';
        setTimeout(() => {
          this.copyStatus = '';
        }, 2000);
      } catch (err) {
        this.copyStatus = '复制失败';
      }
    }
  }
};
</script>

标签: 代码vue
分享给朋友:

相关文章

vue页面分离的实现

vue页面分离的实现

Vue页面分离的实现方法 将Vue页面分离为多个组件或模块,有助于提升代码可维护性和复用性。以下是几种常见的实现方式: 组件化拆分 通过将页面拆分为多个子组件,每个组件负责特定功能或UI部分。使用…

vue实现公式

vue实现公式

在Vue中实现公式展示或计算可以通过多种方式实现,以下为具体方法: 使用模板插值与计算属性 若公式较简单,可直接在模板中使用插值表达式或计算属性。例如计算圆的面积: <templat…

vue实现token

vue实现token

Vue 中实现 Token 认证的方法 在 Vue 中实现 Token 认证通常涉及前端与后端的交互,包括 Token 的获取、存储、发送和刷新等操作。以下是具体实现步骤: 获取 Token 用户…

vue实现fullpage

vue实现fullpage

Vue 实现 FullPage 效果 在 Vue 中实现全屏滚动(FullPage)效果可以通过多种方式完成,以下是几种常见的方法: 使用现有库 vue-fullpage.js 安装 vue-fu…

vue实现必填

vue实现必填

Vue 实现表单必填验证的方法 在Vue中实现表单必填验证可以通过多种方式完成,以下是几种常见的方法: 使用HTML5原生属性 最简单的必填验证可以通过HTML5的required属性实现:…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…