Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自事件的Jquery pageX和screenX在第二个监视器上为负值_Javascript_Jquery_Html - Fatal编程技术网

Javascript 来自事件的Jquery pageX和screenX在第二个监视器上为负值

Javascript 来自事件的Jquery pageX和screenX在第二个监视器上为负值,javascript,jquery,html,Javascript,Jquery,Html,当我的函数在第一个监视器上工作时,就像在第二个监视器上一样,所有事件的坐标都是负数。它的参考点仍然在我的主监视器上。事件在从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 -

当我的函数在第一个监视器上工作时,就像在第二个监视器上一样,所有事件的坐标都是负数。它的参考点仍然在我的主监视器上。事件在从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值

请在此处查找信息和示例:


请注意,虽然这是Mozilla网站上的信息,但也适用于其他流行浏览器,以便在当前屏幕上获得X坐标,您可以使用:

e.clientX

而不是
e.pageX
。这将返回一个
x>0
值。

这是因为
screen
通常不知道您有多个屏幕,它基于“主监视器”。对此的支持信息非常粗略。MDN没有提到浏览器支持,caniuse.com上也没有提到。所以我会在IE9中使用这个,IE9中没有。。这不算是几周后的下线吗?还有谁还在用那个合规的?这里真的是一团糟。