存在垂直滚动条时使用clientY时出错

时间:2011-10-20 07:17:32

标签: javascript

每当点击一个标识为toolpopup的范围(div应该出现在这些坐标处)时,我会尝试弹出一个div,并且它适用于位于页面顶部的跨距。但是当我向下滚动并单击跨度时,div被创建但不是在所需的坐标处。什么可能是错的?我在Firefox 7.0.1

上尝试
$("#toolpopup").live("click", function(event) {
    var X = event.clientX;
    var Y = event.clientY;
    $("#popup").css('position', 'absolute');
    $("#popup").css("top", Y);
    $("#popup").css("left", X);
    $("#popup").css("display","block");
});

1 个答案:

答案 0 :(得分:4)

我不确定是否正确理解了您的任务,但您可能需要在XY附加文档滚动偏移,因为:

  

MDN https://developer.mozilla.org/en/DOM/event.clientX:   的 event.clientX

     

返回应用程序的客户区中的水平坐标   事件发生的时间

在我的代码中,我得到滚动偏移量:

var xOffset=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft);
var yOffset=Math.max(document.documentElement.scrollTop,document.body.scrollTop);

然后,您可以将XY设置为:

$("#toolpopup").live("click", function(ev) {
    var X = ev.clientX+xOffset;
    var Y = ev.clientY+yOffset;