javascript - 禁用上下文菜单和右键单击菜单

标签 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())。

这段代码工作得很好,虽然鼠标中键仍然打开一个新标签。我该如何解决这个问题?

提前致谢!

最佳答案

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

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);

关于javascript - 禁用上下文菜单和右键单击菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19985320/

相关文章:

javascript - 调用对象中设置的匿名函数,未得到预期结果

javascript - 如何从异步调用返回响应?

wpf - 内置WPF控件如何管理其事件处理程序以处理附加事件?

c - GTK+ Drawing_Area Image Redraw with Expose 事件

javascript - 如何使用 navigator.share() 在 iOS 上显示 'Add to home screen'?

JavaScript 发布并等待响应 JSON

javascript - 在 Canvas 上绘制纬度/经度坐标

javascript - 如何在 Google map v3 上添加和删除多边形?

javascript - 准备好文档时触发弹出窗口或 div id

c# - 正确通知系统范围内命名的手动重置事件的所有监听器,然后立即重置它