js获取剪切板文字图片方法

有时候经常在网上看到网页可以读取系统粘贴板的内容,可以显示文字和图片等内容,就挺好奇的,所以就研究了一下。

基本原理

通过监听inputpaste事件,获取到clipboardData内容,然后显示到页面上面。

方法实现

  • html部分
<div class="paste">
	<select name="type" id="type">
		<option value="text">文本</option>
		<option value="richText">富文本</option>
		<option value="img">图片</option>
	</select>
	<input id="content" type="text" placeholder="请输入粘贴内容">
	<p>您粘贴的内容是: </p>
	<p id="view"></p>
	<div>
		测试内容:<a href="https://www.baidu.com/">https://www.baidu.com/</a>
	</div>
</div>
  • css部分
.paste {
	margin: 0 auto;
	max-width: 320px;
}
select {
	width: 80px;
	height: 30px;
}
input {
	width: 225px;
	height: 25px;
}
#view {
	padding: 10px;
	border: 2px dotted pink;
}
  • js部分
let type = document.querySelector('#type');
let content = document.querySelector('#content');
let view = document.querySelector('#view');
showClip(type.value, content, view);

type.addEventListener('change', function (e) {  
	let currentType = e.target.value;
	content.value = '';
	view.innerText = '';
	showClip(currentType, content, view);
})

function showClip (type, content, view) {
	content.addEventListener('paste', function (event) {  
		let clipboardData = event.clipboardData || event.originEvent.clipboardData;
		let items = clipboardData.items;
		if (type == 'text') {
			if (items.length > 0 && items[0].kind == 'string') {
				items[0].getAsString(function (e) {  
					view.innerText = e;
				})
			}
		}
		if (type == 'richText') {
			if (items.length > 0 && items[1].kind == 'string') {
				items[1].getAsString(function (e) {  
					view.innerHTML = e;
				})
			}
		}
		if (type == 'img') {
			if (items.length > 0 && items[0].kind == 'file') {
				let blob = items[0].getAsFile();
				let reader = new FileReader();
				reader.readAsDataURL(blob);
				reader.onload = function (e) {  
					let img = document.createElement('img');
					img.src = e.target.result;
					view.appendChild(img);
				}
			}
		}
	})
}

效果预览

  • 粘贴显示文本内容
    在这里插入图片描述
  • 粘贴显示富文本内容
    在这里插入图片描述
  • 利用微信,qq等截图工具粘贴图片

在这里插入图片描述
在这里插入图片描述
好了,就介绍到这里。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值