Javascript 来自事件的Jquery pageX和screenX在第二个监视器上为负值
当我的函数在第一个监视器上工作时,就像在第二个监视器上一样,所有事件的坐标都是负数。它的参考点仍然在我的主监视器上。事件在从html5拖放时触发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 -
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中没有。。这不算是几周后的下线吗?还有谁还在用那个合规的?这里真的是一团糟。