将网站上的所有右键点击转为左键点击

时间:2015-10-18 14:39:36

标签: javascript jquery html html5

我正在寻找一个快速的JavaScript修复程序:

假设您正在使用鼠标或触控板(PC /笔记本电脑)浏览设备上的单个网页,我希望跟进。

右键单击鼠标时:

  • 停用右键单击。所以没有下拉菜单。
  • 右键单击左键,例如我在图像或锚点上单击了鼠标右键,该站点应该处理它,就像我在此元素上单击鼠标左键一样。

此功能应适用于整个网站,所有元素。 有没有一种简单的方法来解决这个问题?

我已经尝试过了:

<script type="text/javascript">
function click (e) {
  if (!e)
    e = window.event;
  if ((e.type && e.type == "contextmenu") || (e.button && e.button == 2) || (e.which && e.which == 3)) {
    if (window.opera)
      window.alert("Sorry, this function is deactivated.");

    return false;
  }
}
if (document.layers)
  document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = click;
document.oncontextmenu = click;
clickedOption.parentNode.selectedIndex = clickedOption.index;
</script>

这会禁用鼠标右键单击的功能,但我不能让它像左键单击一样。 有解决方案吗什么可能是错的?

3 个答案:

答案 0 :(得分:2)

如果按下右键,您可以在文件mousedown上发送点击事件:

$(document).on('mousedown contextmenu', function (e) {
    if (e.button === 2) {
        e.preventDefault();
        var mclick = document.createEvent("MouseEvents");
        mclick.initMouseEvent("click", false, true, window, 0, e.screenX, e.screenY, e.clientX, e.clientY, true, false, false, true, 0, null);
        e.target.dispatchEvent(mclick);
    }
});

-jsFiddle-

不确定它是否符合您的所有需求,但我想给您一些想法。

答案 1 :(得分:2)

这将强制左键单击文档上的右键单击或单击的任何元素

document.addEventListener('contextmenu', function(e){

  // Stop the context menu
  e.preventDefault();
  e.stopPropagation();
  
  // Try to avoid document wide things, just elements
  if(e.target.nodeName != 'HTML'){
    e.target.click();      
  }
});

// Testing
document.addEventListener('click',function(e){
  e.target.innerHTML = 'Caught';
});
<div>Right Click Me</div>
<span>Right Click Me</span>

回答对我的回答的评论 - &gt;

document.addEventListener('contextmenu', function(e){

  // Stop the context menu
  e.preventDefault();
  e.stopPropagation();
        
  
});

// Testing
document.addEventListener('click',function(e){
  e.target.innerHTML = 'Caught';
});
<div>I dont work on right clicks</div>

答案 2 :(得分:0)

尝试以下方法:

$("body").on("contextmenu", function(e){
    e.preventDefault();
    e.target.click();
});