Hot For Coding
阻止IE8下右键菜单的弹出

今天写一个自定义右键菜单功能,要实现这个功能需要捕获右键事件,这个很容易,几乎没有任何兼容。标签上添加 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。

TITLE: 阻止IE8下右键菜单的弹出

LINK: https://www.qttc.net/356_prevent_ie8_contextmenu.html

NOTE: 转载内容请注明出处