js兼容问题,鼠标相对于事件源的位置,offsetX,layerX

来源:互联网 发布:中异软件切割 编辑:程序博客网 时间:2024/05/29 08:39
前几天在工作中遇见一个问题。就是要判断鼠标点击后 相对于事件源(event.target)的位置。


当然可以用event.offsetX,event.offsetY,来获取到。 但是到了FF里面就挂了。 event.layerX 也不获取不到。

干脆就自己写了个方法,

function getOffsetXY(evt) {    if (evt.offsetX && evt.offsetY) return {x: evt.offsetX, y: evt.offsetY};    var ele = evt.target || evt.srcElement;    var o = ele;    var x = 0;    var y = 0;    while (o.offsetParent) {        x += o.offsetLeft;        y += o.offsetTop;        o = o.offsetParent;    }    // 处理当元素处于滚动之后的情况    var left = 0;    var top = 0    while (ele.parentNode) {        left += ele.scrollLeft;        top += ele.scrollTop;        ele = ele.parentNode;    }    return {x: evt.pageX + left - x, y: evt.pageY + top - y};}
用法:
 var _x = getOffsetXY(event).x,        _y = getOffsetXY(event).y;



 

0 0
原创粉丝点击