Jquery pageX和screenX在第二个监视器上的事件为负数

Jquery pageX and screenX from event is negative on second monitor

本文关键字:事件 监视器 pageX screenX 第二个 Jquery      更新时间:2023-09-26

虽然我的函数在第一个监视器上工作,就像在第二个监视器上一样,但事件的所有坐标都是负的。就像它的参考点仍然在我的主要监视器上。事件是在从html5拖放时触发的。

function endDnD(e) { 
   var parentOff = $(this).parent().offset();
   console.log(e);
   console.log(e.pageX, e.pageY, parentOff.left, parentOff.top);
   var posX = e.screenX - parentOff.left;
   var posY = e.pageY - parentOff.top; 
   $(this).css('left', posX);
   $(this).css('top', posY);
}

我认为您需要将其添加到等式中:

 window.screen.availLeft

如果是主屏幕(默认情况下为左屏幕)或主屏幕的宽度作为右屏幕的起点,则返回0值。

在此处查找信息和示例:https://developer.mozilla.org/en-US/docs/Web/API/Screen/availLeft

请注意,虽然这是Mozilla网站上的信息,但它也应该适用于其他流行的浏览器

要在当前屏幕上获得X坐标,可以使用:

e.clientX

而不是CCD_ 1。这将返回一个x > 0值。