vue使用clipboard插件实现文本复制

本例应用场景为,二维码链接复制

1.安装

npm install clipboard --save

2.新建js文件   clipboard.js

import Vue from 'vue'
import Clipboard from 'clipboard'

function clipboardSuccess() {
  Vue.prototype.$message({
    message: '复制成功',
    type: 'success',
    duration: 1500
  })
}

function clipboardError() {
  Vue.prototype.$message({
    message: '复制失败',
    type: 'error'
  })
}

export default function handleClipboard(text, event) {
  const clipboard = new Clipboard(event.target, {
    text: () => text
  })
  clipboard.on('success', () => {
    clipboardSuccess()
    clipboard.destroy()
  })
  clipboard.on('error', () => {
    clipboardError()
    clipboard.destroy()
  })
  clipboard.onClick(event)
}

3.引入

<el-input v-model="qrCodePayment.qrCodeUrl" />
<el-button type="primary" style="float:right" @click="copyUrl">复制地址</el-button>
//js文件存放路径
import handleClipboard from '@/utils/clipboard'
  data() {
    return {
      qrCodePayment:{
          qrCodeUrl:'https://www.baidu.com/'
      }
    }
  },
//复制url 
    copyUrl() {
      handleClipboard(this.qrCodePayment.qrCodeUrl, event)
    },

实现效果:

### 使用 `vue-clipboard2` 实现文本复制功能 为了实现文本内容的一键复制,可以采用 `vue-clipboard2` 插件来简化操作。下面展示了如何集成并使用插件完成这一目标。 #### 安装依赖库 首先,在项目中安装所需的 npm 包: ```bash npm install vue-clipboard2 --save ``` #### 初始化 Vue Clipboard 组件 接着,在应用入口文件(通常是 main.js 或 app.vue 中),引入并初始化 `vue-clipboard2`: ```javascript import { createApp } from 'vue' import App from './App.vue' // 引入 vue-clipboard2 并注册全局指令 import VueClipboard from 'vue-clipboard2' const app = createApp(App) app.use(VueClipboard) app.mount('#app') ``` #### 创建复制按钮组件 创建一个新的 Vue 组件用于展示和触发复制行为。在这个例子中假设有一个名为 `<CopyButton>` 的组件负责显示按钮以及调用复制逻辑。 ```html <template> <div class="copy-button"> <!-- 显示要被复制的内容 --> <textarea ref="richTextContent">{{ richText }}</textarea> <!-- 复制按钮 --> <button v-clipboard:success="onCopySuccess" v-clipboard:error="onCopyError" v-clipboard="richText">点击复制</button> {{ message }} </div> </template> <script setup> import { ref } from 'vue'; let richText = ref('<p>这是<strong>一段测试</strong>富<em>文本</em></p>'); let message = ref(''); function onCopySuccess() { message.value = '复制成功!'; } function onCopyError() { message.value = '复制失败,请重试.'; } </script> <style scoped> .copy-button button { padding: .5rem; margin-top:.5rem ; cursor:pointer; } </style> ``` 上述代码片段通过设置 `v-clipboard` 自定义属性绑定到待复制的数据源上,并指定了两个事件处理器分别处理成功的回调函数 (`onCopySuccess`) 和错误情况下的响应(`onCopyError`). 同时也提供了一个简单的样式样例以便更好地理解效果[^1]. #### 获取剪切板中的内容 如果还需要获取当前系统的剪贴板上的文字信息,则可以通过浏览器 API 来读取它。这里给出一个异步的方法作为参考: ```javascript async function getClipboardContents(){ try{ let clipboardData = await navigator.clipboard.readText(); console.log('剪切板内容:', clipboardData); } catch(err){ console.error('无法访问剪贴板', err); } } ``` 此方法利用了现代浏览器提供的 Clipboard API 进行交互,能够安全有效地取得用户的剪贴板数据.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值