教练!我想用js监听复制和粘贴

1,831 阅读1分钟

前言

我从小就有个梦想,我想拥有掌控一切的能力。但是今天我遇到了瓶颈--------------------用js监听复制和粘贴事件!为了掌控这一技能我翻阅了山和大海,终于!我悟了....

代码

总代码

window.addEventListener('copy',(e)=>{
        //取消默认复制
	e.preventDefault()
	let content=window.getSelection()
        //获取复制的text
	let textContent=content.toString()
        //获取复制的html
	let html=content.getRangeAt(0).cloneContents()
	let div=document.createElement('div')
	div.appendChild(html)
	let htmlContent=div.innerHTML
        //给剪切板赋值
	e.clipboardData.setData('text',htmlContent)
})
window.addEventListener('paste',(e)=>{
	e.preventDefault()
	let forcus=document.activeElement
	forcus.value+=e.clipboardData.getData('text')
})

复制文本

通常的复制都是屏蔽了文本的样式,代码如下:

window.addEventListener('copy',(e)=>{
        //取消默认复制
	e.preventDefault()
	let content=window.getSelection()
        //获取复制的text
	let textContent=content.toString()
        //给剪切板赋值
	e.clipboardData.setData('text',textContent)
})

复制样式

有时候我不想只是单单的复制文本,我连文本的样式也想复制,实现代码如下:

window.addEventListener('copy',(e)=>{
        //取消默认复制
	e.preventDefault()
	let content=window.getSelection()
        //获取复制的html
	let html=content.getRangeAt(0).cloneContents()
	let div=document.createElement('div')
	div.appendChild(html)
	let htmlContent=div.innerHTML
        //给剪切板赋值
	e.clipboardData.setData('text',htmlContent)
})

处理粘贴事件

有时候我需要对粘贴的内容进行过滤,过滤调一些奇奇怪怪的东西,可以用下面的代码:

window.addEventListener('paste',(e)=>{
	e.preventDefault()
        //获取当前聚焦的元素(一般都是input框,如果自己想要做其他的操作可以直接拿粘贴内容进行操作)
	let forcus=document.activeElement
        //给聚焦元素赋值
	forcus.value+=e.clipboardData.getData('text')
        //e.clipboardData.getData('text')获取粘贴内容的文本
        //e.clipboardData.getData('html')获取粘贴内容的HTML形式
})