JavaScript 监听页面的ctrl+c 事件

来源:互联网 发布:linux进去图形界面 编辑:程序博客网 时间:2024/06/02 04:24

有一个需求,是监听平台的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;  } ; 
三行代码解决!

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


1 0