当前位置: 首页 > article >正文

js复制内容到剪贴板实现复制粘贴功能

js复制内容到剪贴板实现复制粘贴功能
第一种方法,用到 clipboard.js 插件
clipboard 版本是1.5.12,cdn地址如下:

<script src='https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js'></script>

情况一:复制某标签的内容
结构:

  <div id="div1">这里放要复制的内容</div>
  <button id="copyLink" data-clipboard-action="copy" data-clipboard-target="#div1"> 复制到剪贴板 </button>

js代码:

  document.getElementById("copyLink").onclick=function(){
	const btnCopy = new Clipboard("#copyLink");//放选择器
	alert("复制成功");
  };

情况二:复制某标签的属性值
结构:

  <input id="input1" value="这里放要复制的内容" />
  <button id="copyLink" data-clipboard-action="copy" data-clipboard-target="#input1"> 复制到剪贴板 </button>
  document.getElementById("copyLink").onclick=function(){
	const btnCopy = new Clipboard("#copyLink");//放选择器
	alert("复制成功");
  };

注意:这种情况,目标标签只能是input textarea ,不能是其他的标签如div p ...

情况三:复制自己身上的属性(data-clipboard-text)对应的值:
结构:  

  <button id="copyLink" data-clipboard-action="copy" data-clipboard-text="这里放要复制的内容"> 复制到剪贴板 </button>

js代码:

  document.getElementById("copyLink").onclick=function(){
	const btnCopy = new Clipboard("#copyLink");//放选择器
	alert("复制成功");
  };

情况四:复制js中的变量内容
结构:

  <button id="copyLink"> 复制到剪贴板 </button>

js代码:

	document.getElementById("copyLink").onclick=function(){
		const btnCopy = new Clipboard("#copyLink");//放选择器
		var copyContentInfo = '这里放要复制的内容';
		btnCopy.text=function(){//重写text函数的返回值即可,return 什么就返回什么
			return copyContentInfo;
		};
		alert("成功");
	};

对于 data-clipboard-action 属性的说明:

值有常用两种:"copy"->复制		"cut"->剪切

new Clipboard的实例事件(成功和失败事件)

btnCopy.on('success', function(e){//成功
	console.info('Action:', e.action);//触发的是 copy 复制的动作,cut 是剪切
	console.info('Text:', e.text);    //已经复制好的内容
	console.info('Trigger:', e.trigger);//触发的源对象,说的是:谁点击的就是谁		这个 谁 代表是某个元素   
	alert("复制成功");

	e.clearSelection();  
});
btnCopy.on('error', function(e){//失败
	console.error('Action:', e.action); 
	console.error('Trigger:', e.trigger); 
});

第二种方法,是用原生js方法: document.execCommand
情况一:可编辑的标签(input textarea):
结构:

  <button id="copyLink"> 复制到剪贴板 </button>

js代码:

  document.getElementById("copyLink").onclick=function(){
	var copyContent="这里放要复制的内容";
	var input = document.createElement("input");//创建input标签
	input.setAttribute("value", copyContent); 
	document.body.appendChild(input);
	if(input.setSelectionRange){
		input.focus();
		input.setSelectionRange(0, -1);//全选
	}else{
		input.select();
	}
	document.execCommand("copy");
	alert("复制成功");
	
	document.body.removeChild(input);
  };

说明:这种情况,创建的标签只能有 input textarea,其他标签不行
情况二:非可编辑的标签(div p…):
结构:

  <div id="div1">这里放要复制的内容aadf</div>
  <button id="copyLink"> 复制到剪贴板 </button>

js代码:

  document.getElementById("copyLink").onclick=function(){
	var div1 = document.getElementById("div1");
	if(document.body.createTextRange){
		var range = document.body.createTextRange();
		range.moveToElementText(div1);
		range.select();
		document.execCommand("copy");
		alert("复制成功");
	}else if(window.getSelection) {
		var selection = window.getSelection();
		var range = document.createRange();
		range.selectNodeContents(div1);
		selection.removeAllRanges();
		selection.addRange(range);
		document.execCommand("copy");
		alert("复制成功");
	}else{
		alert("复制失败");
	}
	//document.body.removeChild(div1);
  };

http://www.kler.cn/a/273616.html

相关文章:

  • w014基于Springboot校园管理系统的设计与实现
  • 操作系统进程的描述与控制知识点
  • 中文分词模拟器
  • 智能座舱相关术语全解及多模态交互在智能座舱中的应用
  • docker部署nginx+nacos+redis+java镜像和容器
  • 国内短剧源码短剧系统搭建小程序部署H5、APP打造短剧平台
  • git tag标签使用
  • 从底层结构开始学习FPGA(0)----FPGA的硬件架构层次(BEL Site Tile FSR SLR Device)
  • MySQL 锁机制
  • Pytorch常用的函数(七)空洞卷积详解
  • word 及PPT 中修改公式字体
  • Windows程序员用MAC:初始设置(用起来像win一些)
  • jenkins Pipeline接入mysql
  • 在Visual Studio中调试 .NET源代码
  • 在Linux/Ubuntu/Debian中创建自己的命令快捷方式
  • 论文笔记:液体管道泄漏综合检测与定位模型
  • 探索编程迷宫:选择你的职业赛道
  • Day68:WEB攻防-Java安全原生反序列化SpringBoot攻防heapdump提取CVE
  • 【小程序开发】蓝牙设备API——单点蓝牙应用程序编程接口整理(二)
  • 强缓存和协商缓存
  • 基于深度学习YOLOv8+Pyqt5的工地安全帽头盔佩戴检测识别系统(源码+跑通说明文件)
  • Linux系统之jq工具的基本使用
  • TCP - 传输控制协议
  • Java基础经典10道题
  • Python Web开发记录 Day13:Django part7 Ajax入门与案例(任务管理)
  • java 常见排序算法以及详细代码