【问题标题】:Catch left-click, let right-click pass through抓住左键,让右键通过
【发布时间】:2022-01-04 05:54:49
【问题描述】:

我有一个我希望能够右键单击的元素。但是,在该元素上方是几个透明的元素,我希望能够左键单击(以了解单击的位置)。有没有办法让右键点击下面的元素,而左键仍然被上面的透明元素注册?

【问题讨论】:

标签: javascript html css reactjs


【解决方案1】:

解决此问题的一种方法是防止右键单击对顶部的透明元素产生任何影响,除非使其在下方元素上调度事件。

这是一个简单的例子。

.container {
  width: 300px;
  height: 300px;
  position: relative;
}
.underneath {
  width: 100%;
  height: 100%;
  background-color: pink;
}
.ontop {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
<div class="container">
<div class="underneath" oncontextmenu="alert('underneath');">right click me</div>
<div class="ontop" onclick="alert('ontop');" oncontextmenu="event.preventDefault();const ev = new Event('contextmenu'); document.querySelector('.underneath').dispatchEvent(ev);"></div>
</div>

【讨论】:

  • 谢谢!有没有办法使用默认的上下文菜单而不是警报来使它工作?
  • 警报仅用于演示目的 - 证明正确的元素正在接收正确的事件。删除它并放入您想要放入的任何代码。另外,通常我会通过 Javascript 添加 eventListener 而不是使用 onclick/oncontextmenu 属性。我也将它们用于演示。
  • 我知道我可以制作一个自定义菜单,但我想知道是否可以让默认菜单也出现(在没有oncontextmenu 侦听器的情况下单击某处时会得到的菜单)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 2015-03-03
  • 2019-05-03
相关资源
最近更新 更多