Javascript操作剪切板数据(支持IE、Chrome、360、搜狗)
Chrome和火狐的复制和粘贴只能在onpaste的事件中获取,不是Chrome和火狐小心眼,关键是为了用户安全,如果开发者随便能获取您的剪切板,如果您剪切板有重要信息,总的说是不安全的.
$.fn.paste = function(fn,c) { var s,t=this; $(t).on('paste',function(e) { s = (e.originalEvent.clipboardData || window.clipboardData).getData("text/html") || ''; if (fn.call(t,s) !== false) { e.preventDefault() } }); }
近日,项目上需要在WEB页面上操作剪切板中的数据,经过一顿搜索,终于找到了一个比较完美的解决办法。
当然,在实际应用时还要自行修改一下。经过测试,目前支持IE、Chrome、360、搜狗等浏览器,其它浏览器还未验证。本贴由FastMVC首发,谢谢关注FastMVC
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Untitled</title> <script> var EventUtil = { addHandler: function (element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } }, getEvent: function (event) { return event ? event : window.event; }, getClipboardText: function (event) { var clipboardData = (event.clipboardData || window.clipboardData); return clipboardData.getData("text"); }, setClipboardText: function (event, value) { if (event.clipboardData) { return event.clipboardData.setData("text/plain", value); } else if (window.clipboardData) { return window.clipboardData.setData("text", value); } }, preventDefault: function (event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } } }; </script> </head> <body> <form name="f1"> 文本框:<input type="text" name="textbox1" id="textbox1" value=""/> </form> </body> <script> var textbox = document.forms[0].elements["textbox1"] EventUtil.addHandler(textbox, "paste", function (event) { event = EventUtil.getEvent(event); var text = EventUtil.getClipboardText(event); alert(text); //if (!/^\d*$/.test(text)) { //EventUtil.preventDefault(event);//非数字则取消粘贴 //} }); </script> </html>
1283