js vue3 vue2鼠标单击事件复制指定内容到粘贴板

news/2024/9/24 3:20:04/文章来源:https://www.cnblogs.com/luckybaby519/p/18330738

借助原生 JavaScript 的 navigator.clipboard.writeText() 方法来时(要求页面是在用户交互的上下文中,比如点击事件处理程序中调用)

如:点击列表的复制按钮,得到指定列(data)的值到粘贴板

<template>  <div>  <button @click="click">复制文本</button>  </div>  
</template>
 methods: {  async click() {  try {  await navigator.clipboard.writeText('这里是要复制的文本');  alert('文本已复制到剪贴板!');  } catch (err) {  console.error('复制失败: ', err);  alert('无法复制文本,请手动复制。');  }  },  },  

注意:

  • navigator.clipboard.writeText() 方法是异步的,因此你需要在 async 方法中调用它,并在调用后使用 await 等待它完成。
  • 这个方法可能会抛出异常,比如如果用户的浏览器不支持这个功能,或者出于安全原因阻止了剪贴板操作。因此,使用 try...catch 来处理可能的错误是个好习惯。
  • 确保你的网页在 HTTPS 下运行,因为出于安全考虑,某些浏览器可能会限制 HTTP 页面上剪贴板的使用。
  • 考虑到用户体验,最好提供一个反馈机制(如本例中的 alert),告知用户操作是否成功。

vue3与elementPlus的el-tabel的完整实例:

<template><el-table :data="tableData" style="width: 100%"><el-table-column label="Date" width="180"><template #default="scope"><div style="display: flex; align-items: center"><span style="margin-left: 10px">{{ scope.row.date }}</span><span style="margin-left: 20px" @click="click(scope.row.date)"><el-icon><DocumentCopy /></el-icon></span></div></template></el-table-column><el-table-column label="Name" width="180"><template #default="scope"><el-popover effect="light" trigger="hover" placement="top" width="auto"><template #default><div>name: {{ scope.row.name }}</div><div>address: {{ scope.row.address }}</div></template><template #reference><el-tag>{{ scope.row.name }}</el-tag></template></el-popover></template></el-table-column><el-table-column label="Operations"><template #default="scope"><el-button size="small" @click="handleEdit(scope.$index, scope.row)">Edit</el-button><el-buttonsize="small"type="danger"@click="handleDelete(scope.$index, scope.row)">Delete</el-button></template></el-table-column></el-table>
</template><script lang="ts" setup>
import { DocumentCopy } from '@element-plus/icons-vue'interface User {date: stringname: stringaddress: string
}const handleEdit = (index: number, row: User) => {console.log(index, row)
}
const handleDelete = (index: number, row: User) => {console.log(index, row)
}
const  click=async(data:any)=> {try {  await navigator.clipboard.writeText(data);  alert('文本已复制到剪贴板!');  } catch (err) {  console.error('复制失败: ', err);  alert('无法复制文本,请手动复制。');  }  }
const tableData: User[] = [{date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-04',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-01',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},
]
</script>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟冲刺(Sprint)

用户地图 模拟冲刺Sprint 队伍与选手信息展示 用户故事:作为赛事观众或参赛者,我能够通过网页查看所有队伍及其选手的详细信息。 任务拆分与开发时间 设计队伍与选手的数据模型,并在后端数据库中创建相应表格。-6h 实现后端API接口,用于获取队伍与选手信息。-8h 设计并实…

使用SPSS分析数据简单教程

1. SPSS SPSS原名社会科学统计包(Statistical Package for the Social Sciences),SPSS公司于2000年正式将英文全称更改为统计产品与服务解决方案(Statistical Product and Service Solutions)。2009年7月28日,SPSS公司宣布该公司被IBM收购。 2. 解决什么问题? 一般我们使…

Jmeter之读取csv文件踩坑记

CSV Data Set Config是JMeter中用于参数化测试的关键元件,其主要功能是从CSV文件中读取数据,并将这些数据作为变量提供给测试脚本使用。这种元件在模拟多用户、不同输入或其他测试用例时非常有用。以下将详细介绍CSV Data Set Config的各个参数及其作用: 文件名:可以填写文…

编译期链接时共享库搜索路径优先级实验

做实验验证共享库在编译期链接时库路径搜索的优先级目录前言实验环境目录说明准备工作单独测试不配置路径默认路径LIBRARY_PATH-L优先级测试默认路径和LIBRARY_PATH-L和默认路径DEBUG模式编译器配置详细信息链接器详细信息DEBUG总结验证默认路径>LIBRARY_PATH原因附录库文件…

共享库编译期链接优先级实验

做实验验证共享库在编译期链接时库路径搜索的优先级目录前言实验环境目录说明准备工作单独测试不配置路径默认路径LIBRARY_PATH-L优先级测试默认路径和LIBRARY_PATH-L和默认路径DEBUG模式编译器配置详细信息链接器详细信息DEBUG总结验证默认路径>LIBRARY_PATH原因附录库文件…

ComfyUI插件:ComfyUI Impact 节点(三)

前言: 学习ComfyUI是一场持久战,而 ComfyUI Impact 是一个庞大的模块节点库,内置许多非常实用且强大的功能节点 ,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修…

CSP11

CSP11 T1暴力 #include <bits/stdc++.h> #define speed() ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); #define ll long long #define ull unsigned long long #define lid (rt<<1) #define rid (rt<<1|1) // #define endl \n //#define int long …

Ansible管理密码库文件

ansible可能需要访问密码或API密钥等敏感数据,以便能配置受管主机。通常,此信息可能以纯文本形式存储在清单变量或其他Ansible文件中。但若如此,任何有权访问Ansible文件的用户或存储,这些Ansible文件的版本控制系统都能够访问此敏感数据。这存在安全风险。使用Ansible随附…

Ansible忽略任务失败

在默认情况下,任务失败时会中止剧本任务,不过可以通过忽略失败的任务来覆盖此类行为。在可能出错且不影响全局的段中使用ignore_errors关键词来达到目的。 环境: 受控主机清单文件: [dev] 192.168.10.129 [all:vars] ansible_ssh_user=root ansible_ssh_pass=123 编写yum文…

React 的 KeepAlive 实战指南:深度解析组件缓存机制

Vue 的 Keep-Alive 组件是用于缓存组件的高阶组件,可以有效地提高应用性能。它能够使组件在切换时仍能保留原有的状态信息,并且有专门的生命周期方便去做额外的处理。该组件在很多场景非常有用,比如:tabs 缓存页面分步表单路由缓存 在 Vue 中,通过 KeepAlive 包裹内…

LangChain补充七:Hub和LangSmith入门

一:Hub简介 https://blog.csdn.net/DEVELOPERAA/article/details/139983286 (一)简介 1.早期 最开始的LangChainHub,类似于github一样,可以理解为LangChain 工具包 或者说 组件中心,里面提供了高质量的组件方便开发者使用。确确实实是一个分享和探索Prompt、链 和Agent的…

借助大语言模型快速升级你的 Java 应用程序

大家都知道我爱小 Q。在我“转码”的征程中,它就像上帝之手,在我本该枯燥漫长的学习进程中拉满快进条。 不仅是我,最近 Amazon Q Developer 还帮助 Amazon 一个由 5 人组成的团队在短短两天内将 1,000 多个生产应用程序从 Java 8 升级到 Java 17(每个应用程序的平均时间不到…