右键菜单未正确显示

时间:2018-08-17 05:04:39

标签: javascript html css contextmenu right-click

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

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-menu id 不在鼠标箭头附近显示,而是显示在单击列表的顶部。

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

请帮助我解决此问题,并且我也需要使用纯Javascript 生成结果。

2 个答案:

答案 0 :(得分:2)

请改用clientXclientY

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

答案 1 :(得分:1)

您需要在此处使用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>