JS监听复制、粘贴、剪贴

本文介绍 js监听 复制 粘贴 剪贴 的使用方法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title></title>
</head>

<body>
    <div id="box" contenteditable="true" style="width:600px;min-height:300px;text-align:justify ;margin:100px auto;border: 1px solid orange;">文字在有些时候,恰恰会是我们认识这个世界的无形障碍。所以你以后读书的时候,不要时时刻刻都去咬文嚼字,若是遇到了瓶颈,不妨先退一步,再登高数步,尽量往高处走一走,不登山峰,不显平地。
    </div>
    <div id="tip" style="width:600px;min-height: 200px;margin: 20px auto;border:1px solid #ddd;"></div>
	<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
    <script>
    	//粘贴
		document.querySelector('#box').addEventListener('paste', (e) => {
		    // 防止默认的粘贴事件和停止冒泡
		    e.preventDefault();
		    e.stopPropagation();
		
		    // 获取剪贴板数据
		    let paste = (e.clipboardData || window.clipboardData).getData('text/html');
		
		    // 做一些粘贴,如删除非utf -8字符
		    paste = paste.replace(/style/gi, 'data-style');
		
		    // 找到光标位置或突出显示的区域
		    const selection = window.getSelection();
		
		    // 如果没有找到光标或突出显示的区域,则取消粘贴操作
		    if (!selection.rangeCount) return false;
		    var div = document.createElement("div");
		    div.innerHTML = paste;
		    // 将修改后的剪贴板内容粘贴到预期的位置
		    selection.getRangeAt(0).insertNode(div);
			console.log(paste);
		    $("#tip").html(paste)
		});
		
		//复制(在测试的时候 复制和粘贴不能一起测试,不然在粘贴的时候会没有内容,原因可能是在复制的时候 event.preventDefault() 方法阻止了默认行为导致剪贴板上的内容不存在了 )
		//event.preventDefault() 阻止默认行为
		//event.stopPropagation() 阻止冒泡
		document.querySelector('#box').addEventListener('copy', (event) => {
			debugger;
			const selection = document.getSelection();
			event.clipboardData.setData('text/plain', selection.toString().toUpperCase());
			event.preventDefault();
			event.stopPropagation();
			let copy = (event.clipboardData || window.clipboardData).getData('text/plain');
			copy = copy.replace(/style/gi, 'data-style');
			$("#tip").html(copy)
		});
		
		//剪贴
		document.querySelector('#box').addEventListener('cut', (event1) => {
			debugger;
			const selection = document.getSelection();
			event1.clipboardData.setData('text/plain', selection.toString().toUpperCase());
			document.getSelection().deleteFromDocument();
			event1.preventDefault();
			event1.stopPropagation();
			let cut = (event1.clipboardData || window.clipboardData).getData('text/plain');
			cut = cut.replace(/style/gi, 'data-style');
			$("#tip").html(cut)
		});
		
		
    </script>
</body>

</html>

参考博客: https://blog.csdn.net/bluelotos893/article/details/81586699
https://developer.mozilla.org/en-US/docs/Web/API/Element/paste_event
https://developer.mozilla.org/en-US/docs/Web/API/Element/copy_event
https://developer.mozilla.org/en-US/docs/Web/API/Element/cut_event

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用[1]中提供的API文档,noVNC库本身并没有提供直接的复制粘贴功能。然而,你可以通过在noVNC中使用Clipboard.js库来实现复制粘贴功能。下面是一个示例代码,演示了如何在Vue中使用noVNC和Clipboard.js来实现复制粘贴功能: 首先,确保你已经在项目中安装了noVNC和Clipboard.js库。 ```vue <template> <div> <div ref="vncContainer"></div> <button @click="copyToClipboard">复制</button> <button @click="pasteFromClipboard">粘贴</button> </div> </template> <script> import noVNC from 'novnc-core'; import ClipboardJS from 'clipboard'; export default { mounted() { // 创建noVNC实例 const vnc = noVNC.createClient(); vnc.mount(this.$refs.vncContainer); // 连接到VNC服务器 vnc.connect('ws://your-vnc-server-url'); // 初始化Clipboard.js const clipboard = new ClipboardJS('.copy-btn'); // 监听复制成功事件 clipboard.on('success', () => { console.log('复制成功'); }); // 监听粘贴成功事件 clipboard.on('paste', () => { console.log('粘贴成功'); }); }, methods: { copyToClipboard() { // 将文本复制剪贴板 const text = '要复制的文本'; const input = document.createElement('input'); input.value = text; document.body.appendChild(input); input.select(); document.execCommand('copy'); document.body.removeChild(input); }, pasteFromClipboard() { // 从剪贴板中获取文本 const text = navigator.clipboard.readText(); text.then((content) => { console.log('从剪贴板中获取到的文本:', content); }); }, }, }; </script> ``` 上述代码中,我们首先在Vue组件中创建了一个noVNC实例,并将其挂载到一个容器元素上。然后,我们初始化了Clipboard.js,并在复制粘贴按钮上添加了相应的点击事件处理函数。在复制按钮的点击事件处理函数中,我们使用`document.execCommand('copy')`将指定的文本复制剪贴板。在粘贴按钮的点击事件处理函数中,我们使用`navigator.clipboard.readText()`从剪贴板中获取文本内容。 请注意,上述代码只是一个示例,你需要根据你的具体需求进行适当的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值