javascript - 将网站上的所有右键点击变成左键点击

标签 javascript jquery html

我正在寻找快速的 JavaScript 修复:

假设您正在使用鼠标或触控板(PC/笔记本电脑)的设备上浏览单个网页,并且我希望发生以下情况。

当您右键单击鼠标时:

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

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

我已经尝试过这个:

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

这会禁用鼠标右键单击的功能,但我无法让它像鼠标左键单击一样运行。 有什么解决办法吗?可能出了什么问题?

最佳答案

这将强制在文档或您单击的任何元素上单击鼠标右键

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>

<小时/> <小时/>

回答对我的答案的评论 ->

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>

关于javascript - 将网站上的所有右键点击变成左键点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33199235/

相关文章:

javascript 函数在表单中不起作用

javascript - 删除 div 中的所有内容,但保留具有特定类名的子项

javascript - jQuery - 更改和表单提交后下拉列表变为空

javascript - 如何覆盖HTML select标签的onclick事件?

html - 如何将 MaterializeCSS fixed-action-btn Toolbar 变成一个工具栏?

html - 样式按钮 : Use Anchor or Input?

javascript - Facebook 风格的固定标题

javascript - 无法从 jQuery ajax 调用获取 json 数据

javascript - 仅在打印时进行 DOM 操作

javascript - .append() 添加的元素在附加后是否已经准备好?