当前位置:网站首页>3种实现文本复制功能的方法
3种实现文本复制功能的方法
2022-07-30 02:21:00 【bug丸】
复制功能的实现方式
一、vue-clipboard
npm install vue-clipboard2 --save
import VueClipboard from 'vue-clipboard2'
Vue.use(VueClipboard)
使用:
<template>
<div class="container">
<input type="text" v-model="content" />
<button
v-clipboard:copy="content"
v-clipboard:success="onCopy"
v-clipboard:error="onError"
>
点击复制
</button>
</div>
</template>
<script>
export default {
data() {
return {
content: "",
};
},
methods: {
onCopy: function(e) {
console.log("复制成功,复制的内容为:", e.text);
},
onError: function(e) {
console.log("复制失败");
},
},
};
</script>
二、navigation.clipboard
navigator.clipboard.writeText() 将指定字符串写入剪切板中,返回一个promise对象
往输入框内输入内容后点击复制,就可以复制了
<input type="text" id="ipt" />
<input type="button" id="btn" value="点击复制" />
<script>
document.querySelector("#btn").addEventListener("click", function() {
navigator.clipboard
.writeText(document.querySelector("#ipt").value)
.then(() => {
alert("复制成功");
})
.catch(() => {
alert("复制失败");
});
});
问题:本地没问题,但是当嵌入到iframe中,复制直接报错了;
cannot read properties of undefined (reading writeText)
只有在用户事先授予网站或应用对剪切板的访问许可之后,才能使用异步剪切板读写方法
解决方法:给iframe添加allow属性
<iframe allow="clipboard-write" src="http://127.0.0.1:5500/src/views/copy.html" />
三、execCommand
如果是input的话可以用,普通的元素不能用,而且select会选中内容,有选中的效果
<input type="text" v-model="content" ref="ipt" />
copyContent() {
this.$refs.ipt.select();
document.execCommand("copy");
}
这种方法不建议使用,已过时
边栏推荐
猜你喜欢

centOS安装MySQL详解

Unity Editor自定义一个记录Bug的窗口

Zero code tools recommended - HiFlow

fluttter学习之ButtonStyle 、MaterialStateProperty

JS history.back() go(-1) Location 跳转 重新加载页面 get请求 返回顶部 bom

测试/开发程序员面试该如何谈薪资待遇呢?突破这个坎......

音视频开发的正确(学习思路+技术指导)

JS develops 3D modeling software

flutter学习之widget的显示和隐藏

LeetCode 2348. Number of all-zero subarrays
随机推荐
将镜像推送到阿里云私有仓库
快速入门jsp
matlab用dde23求解带有固定时滞的时滞微分方程
Mysql中事务是什么?有什么用?
Oracle数据库表空间整理回收与释放操作
CVPR 2022 Best Paper -- Learning to Solve Hard Minimal Problems
05.script_setup中的私有属性
自动配置和 thymeleaf模板引擎
多线程---初阶
postgresql日常运维技能,适合初学者
Linux Jenkins查找缓存文件及删除 (2022-07测试可用)
ROS2知识:编译系统ament_cmake
Tibetan Mapping
戴尔首款纯软产品,再定义下一代对象存储
RAII Technology Learning
Object.freeze() learning
菜刀、冰蝎、蚁剑、哥斯拉的流量特征
关于 SAP Fiori 应用的离线使用
MIT6.S081 小结
JS develops 3D modeling software