当前位置:首页 > 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 是一个渐进式 JavaScript 框架,其核心实现原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。 响应式系统 Vue 使用 Object.definePr…

vue实现下载暂停

vue实现下载暂停

Vue实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLHtt…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class=…

vue实现评分

vue实现评分

Vue 实现评分功能 使用组件库实现 安装 element-ui 或 ant-design-vue 这类 UI 库,它们已经内置了评分组件。 以 element-ui 为例: <te…

vue实现select

vue实现select

Vue 实现 Select 组件的方法 在 Vue 中实现 Select 组件可以通过多种方式完成,以下是几种常见的方法: 使用原生 HTML select 元素 原生 HTML 的 <sel…

vue实现首页

vue实现首页

Vue 实现首页的基本步骤 安装 Vue.js 和相关依赖,可以通过 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代前端开发。 npm instal…