今天写一个自定义右键菜单功能,要实现这个功能需要捕获右键事件,这个很容易,几乎没有任何兼容。标签上添加 oncontextmenu 事件就好。下来就是阻止事件传播以及阻止系统右键弹出菜单的功能。于是我这么干
var e = evt || window.event;
if (e.preventDefault) {
e.preventDefault();
}
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
在IE9、IE10、FireFox、Chrome下都没问题,但在IE8下系统右键没有阻止,自定义菜单与系统菜单都弹出来了,后来查找相关资料,要在阻止IE8、IE7下的右键系统菜单弹出,需要添加一条语句
e.returnValue = false;
修改后,最终我的代码如下:
var e = evt || window.event;
if (e.preventDefault) {
e.preventDefault();
}
if (e.stopPropagation) {
e.stopPropagation();
}else{
e.returnValue = false; // 解决IE8右键弹出
e.cancelBubble = true;
}
问题解决,其实 e.returnValue 可以阻止IE系列浏览器的右键系统菜单弹出。不仅是针对IE8以及IE7。