利用剪切板的copy、cut、paste事件操作。

兼容性上:上述三种事件,只要在上下文菜单(右键菜单),或者使用了相应的键盘组合键,所有浏览器上都可以触发它们。

核心语句即为:当用户触发此三种事件时,通过JS阻止事件的默认行为。

1
2
3
EventUtil.addHandler(text,'copy',function(event){//copy换成paste、cut
event = EventUtil.getEvent(event);//取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演示