禁用上下文菜单和右键菜单

时间:2013-11-14 18:20:20

标签: javascript jquery events mouseevent mousedown

$(document).on('mousedown', 'a', function(event){ 
    event.preventDefault();

    if(event.which == 1){
        if($(this).attr('target') != '_blank'){
            loadpage($(this).attr('href'));
        }
    }
}).on('contextmenu', 'a', function(event){
    event.preventDefault();
});

再次问好Stackoverflow!

对于我当前的项目,我想在每个链接上禁用鼠标右键和中键。当用鼠标左键单击时,如果链接不包含target="_blank",我需要调用一个使用AJAX加载该页面的函数。 (函数loadpage())。

虽然鼠标中键仍然打开一个新标签,但这段代码效果不错。我该如何解决这个问题?

提前致谢!

1 个答案:

答案 0 :(得分:2)

在该事件处理程序中,调用

e.preventDefault():

$("#foo").on('click', function(e) { 
   if( e.which == 2 ) {
      e.preventDefault();
   }
});

或:     使用JAVASCRIPT禁用鼠标滚轮事件:

In IE:

document.attachEvent('onmousewheel', function(e){
     if (!e) var e = window.event;
     e.returnValue = false;
     e.cancelBubble = true;
     return false;
}, false);
In Safari:

document.addEventListener('mousewheel', function(e){
    e.stopPropagation();
    e.preventDefault();
    e.cancelBubble = false;
    return false;
}, false);
In Opera:

document.attachEvent('mousewheel', function(e){
    if (!e) var e = window.event;
    e.returnValue = false;
    e.cancelBubble = true;
    return false;
}, false);
In Firefox:

document.addEventListener('DOMMouseScroll', function(e){
    e.stopPropagation();
    e.preventDefault();
    e.cancelBubble = false;
    return false;
}, false);