JavaScript 监听页面的ctrl+c 事件

有一个需求,是监听平台的ctrl+c 事件,把内容传给后台打印日志

一开始我理解错误,想着是要获取剪切板的内容,查了许多资料,发现 js 有一个对象 clipboardData 可以做到,具体用法

clipboardData.getData('text')

然后这个方法只有IE支持 ,其他的浏览器出于安全性的考虑,不可以操作剪切板的内容,clipboardData都是undefined,flash 可以实现操作剪切板的内容,网上有相关的插件,zclip 分两个版本 ,我用的是引入jquery 库的版本

<script src="jquery.js"></script>  
<script type="text/javascript" src="jquery.zclip.min.js"></script>  

if ( window.clipboardData ) {  
	$('.copy_btn').click(function() {  
		window.clipboardData.setData("Text", $(this).prev('input').val());  
		alert('复制成功!');  
	});  
} else {  
	$(".copy_btn").zclip({  
		path:'ZeroClipboard.swf',  
		copy:function(){return $(this).prev('input').val();},  
		afterCopy:function(){alert('复制成功!');}  
	});  
} 

仔细读了zclip,发现只是可以把内容放进剪切板,还是获取不到ctrl+c 的内容啊

崩溃两分钟之后,换了个思路,抛弃剪切板这个概念,我只是想知道用户的鼠标选取了哪些内容,果然,js有提供一个方法getSelection是获取选中内容的,兼容ie8以下版本的方法如下

var copyText = window.getSelection?window.getSelection():document.selection.createRange().text; 

整体的实现代码如下

document.body.oncopy = function(){ 
	var copyText = window.getSelection?window.getSelection():document.selection.createRange().text; 	 
} ; 
三行代码解决!

虽然走了不少弯路,还是实现了 。有时候,就是这样,一种方法走不通,换个思路试试。


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值