利用剪切板的copy、cut、paste事件操作。
兼容性上:上述三种事件,只要在上下文菜单(右键菜单),或者使用了相应的键盘组合键,所有浏览器上都可以触发它们。
核心语句即为:当用户触发此三种事件时,通过JS阻止事件的默认行为。
1 2 3
| EventUtil.addHandler(text,'copy',function(event){ event = EventUtil.getEvent(event); EventUtil.preventDefault(event);
|
这里用EventUtil对象封装了一些跨浏览器的操作事件的方法。addHandler为跨浏览器事件处理方法。
贴一下EventUtil.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 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; }, preventDefault: function(event){
if (event.preventDefault){ event.preventDefault(); } else { event.returnValue = false; } },
|
另外试着用键盘事件来阻止复制粘贴行为,发现chrome中只有keydown事件才能获取到ctrl的keycode值:=17(keypress和keyup为0或无反应);
用preventDefault(event)不能阻止复制/粘贴行为,可能因为该事件的默认事件为键盘输入,不过通过alert(“xxx”)弹出消息可以抵消掉后续的行为,等于变相的阻止复制粘贴行为。
1 2 3 4 5 6 7
| EventUtil.addHandler(text,'keydown',function(event){ event = EventUtil.getEvent(event); if(event.keyCode===17){ EventUtil.preventDefault(event); alert('操作错误'); } });
|
Demo演示