【问题标题】:Right click menu not displaying in correct position右键菜单未显示在正确位置
【发布时间】:2018-08-17 05:04:38
【问题描述】:

我正在尝试为一个项目列表创建一个编辑和删除选项,当用户右键单击该列表项时,我已将其显示。

document.addEventListener('contextmenu', function(e) {
  e.preventDefault();
  var x = e.offsetX;
  var y = e.offsetY;
  var d = document.getElementById("context-menu");
  d.style.display = "block";
  d.style.left = x + 'px';
  d.style.top = y + 'px';
  console.log(x, y);
}, false);
#context-menu {
  display: none;
  position: absolute;
  color: blue;
}

.listItems li {
  padding-bottom: 25px;
}
<ul class="listItems">
  <li>I am list one</li>
  <li>I am list two</li>
  <li>I am list three</li>
  <li>I am list four</li>
</ul>

<ul id="context-menu">
  <li> Edit </li>
  <li> Delete </li>
</ul>

jsfiddle 链接是 https://jsfiddle.net/dmfvz5qw/1/

在这里,当我右键单击时,名为 context-menuid 未显示在鼠标箭头附近,而是显示在单击列表的顶部。

我需要显示context-menu附近的右键单击位置,而不是任何其他位置。

请帮我解决这个问题,我也需要 Pure Javascript 的结果。

【问题讨论】:

    标签: javascript html css contextmenu right-click


    【解决方案1】:

    请改用clientXclientY

    var x = e.clientX;
    var y = e.clientY;
    

    【讨论】:

      【解决方案2】:

      这里需要用到clientX和clientY,

      如果你也想了解更多关于使用身体滚动位置的定位,请参考此链接https://stackoverflow.com/a/7790764/2630817

       document.addEventListener('contextmenu', function(e) {
      	e.preventDefault();
       document.getElementById("context-menu").display = 'none';     
       var x = e.clientX ;
       var y = e.clientY;
       var d = document.getElementById("context-menu");
       d.style.display = "block";
       d.style.left = x+'px';
       d.style.top = y+'px';
       console.log(x,y);
      }, false);
      #context-menu {
        display: none;
        position: absolute;
        color: blue;
        padding: 0;
        width:50px;
      }
      <ul class="listItems">
        <li>I am list one</li>
        <li>I am list two</li>
        <li>I am list three</li>
        <li>I am list four</li>
      </ul>
      <ul id="context-menu">
        <li> Edit </li>
        <li> Delete </li>
      </ul>

      【讨论】:

      • 我可以知道你为什么在 html 中添加 jquery 吗?但是没有用jquery写的代码?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      相关资源
      最近更新 更多