vue 点击复制文本到剪贴板

一、首先在vue文件的template中定义复制按钮

<div size="small" v-if="item.prop == 'jadeCode'" class="cell-container">
      <span>{{ scope.row.jadeCode }}</span> 
      <button @click="handleCopy(scope.row.jadeCode)" class="copy-button">复制</button>
    </div>

注 :由于我的代码时将表头的label放在script里面用函数获取并渲染,因此会有一些相关定义,请自行斟酌修改。

  • v-if="item.prop == 'jadeCode'":这是一个条件判断语句,用于判断当前正在渲染的单元格是否对应着货物编码(jadeCode)这个属性。只有当item.prop的值等于'jadeCode'时,才会渲染该div元素。
  • size="small":用于设置div元素的大小为小号(small)。
  • class="cell-container":给div元素添加一个名为cell-container的CSS类。
  • {{ scope.row.jadeCode }}:使用双大括号插值语法将scope.row.jadeCode的值显示在span元素内。scope.row表示当前行的数据对象,jadeCode表示货物编码属性的值。
  • <button @click="handleCopy(scope.row.jadeCode)" class="copy-button">复制</button>:渲染了一个按钮元素,并绑定了点击事件@click,当按钮被点击时,会调用handleCopy方法,并将scope.row.jadeCode作为参数传递给该方法。按钮上还添加了一个名为copy-button的CSS类。
二、接着定义复制文本的函数

在<script>中写下:

methods: {
  handleCopy(jadeCode) {
    try {
      navigator.clipboard.writeText(jadeCode);
      alert('货品编码已复制到剪切板');
    } catch (error) {
      console.error('复制货品编码失败:', error);
      alert('复制货品编码失败');
    }
  },
},
三、最后在<style>中调整复制按钮的外观和位置
.cell-container {     
  position: relative;
}

.copy-button {        
  position: absolute;
  right: 0;
  top: 112px;  /*如果你希望在不同的显示器上保持一致的按钮位置,可以考虑使用像素单位来进行定位,这样按钮的位置将与屏幕上的绝对坐标相关联。*/
}
四、最终效果
 

可以将货品编号粘贴出来

Vue 3中,复制文本到剪切板可以通过使用浏览器的剪贴板API来实现。以下是一个简单的示例,展示了如何在Vue 3中实现文本复制功能: 1. 首先,创建一个Vue 3组件: ```vue <template> <div> <input v-model="textToCopy" placeholder="输入要复制文本" /> <button @click="copyText">复制文本</button> </div> </template> <script setup> import { ref } from 'vue'; const textToCopy = ref(''); const copyText = () => { if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(textToCopy.value) .then(() => { alert('文本复制到剪切板'); }) .catch(err => { console.error('复制文本失败:', err); alert('复制文本失败'); }); } else { // 兼容旧版浏览器的方法 const textarea = document.createElement('textarea'); textarea.value = textToCopy.value; textarea.style.position = 'fixed'; // Prevent scrolling to bottom document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { const successful = document.execCommand('copy'); if (successful) { alert('文本复制到剪切板'); } else { alert('复制文本失败'); } } catch (err) { console.error('复制文本失败:', err); alert('复制文本失败'); } document.body.removeChild(textarea); } }; </script> ``` 2. 解释: - 我们使用 `v-model` 将输入框与 `textToCopy` 变量双向绑定。 - 当用户点击复制文本”按钮时,`copyText` 方法会被调用。 - `copyText` 方法首先检查浏览器是否支持现代的剪贴板API (`navigator.clipboard`)。 - 如果支持,使用 `navigator.clipboard.writeText()` 方法复制文本。 - 如果不支持,使用旧版浏览器的方法:创建一个临时的 `<textarea>` 元素,设置其值,选中所有文本,然后执行 `document.execCommand('copy')` 命令。 3. 注意事项: - 现代浏览器大多支持剪贴板API,但在某些情况下可能需要用户交互才能执行复制操作。 - 对于不支持剪贴板API的浏览器,我们提供了兼容性解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值