Javascript document.elementFromPoint在IE上返回null

Javascript document.elementFromPoint在IE上返回null,javascript,internet-explorer,dom,Javascript,Internet Explorer,Dom,我正在使用document.elementFromPoint获取所选元素以进行拖动。但它返回null。当我调试相同的代码,然后重新运行相同的代码时,返回对象 代码如下: function GetZoneFromPoint(x, y, prtDrag, elemIBeam,evnt) { if (x == null || y == null || prtDrag == null || elemIBeam == null) alert("Null in GetZone");

我正在使用document.elementFromPoint获取所选元素以进行拖动。但它返回null。当我调试相同的代码,然后重新运行相同的代码时,返回对象

代码如下:

function GetZoneFromPoint(x, y, prtDrag, elemIBeam,evnt) {
    if (x == null || y == null || prtDrag == null || elemIBeam == null)
        alert("Null in GetZone");
    var prtDragZIndexOld = prtDrag.style.zIndex;
    var elemIBeamZIndexOld = elemIBeam.style.zIndex;
    prtDrag.style.zIndex = -1;
    elemIBeam.style.zIndex = -1;
    var zone;
    zone = document.elementFromPoint(x, y);
    prtDrag.style.zIndex = prtDragZIndexOld;
    elemIBeam.style.zIndex = elemIBeamZIndexOld;
    if (zone == null) {
        zone = document.elementFromPoint(x, y);
        if (zone == null) {
            debugger;
            zone = event.rangeParent;
        }
    }
    if (zone == null) {
        alert('null');
        return null;
    }
    if (x < 0 || x > document.body.clientWidth ||
      y < 0 || y > document.body.clientHeight) {
        zone = null;
    }
    else if ((zone.className == 'LayoutWellElement') ||
           (zone.className == 'LayoutMainElement') ||
           (zone.className == 'ElementFrame')) {
        while ((!FIsZone(zone)) && (zone.tagName != 'BODY')) {
            zone = zone.parentElement;
        }
    }
    if (!FIsZone(zone)) {
        zone = null;
    }
    return zone;
}

看来我们也有同样的想法,哈哈。但我正在研究物体碰撞。看,你叫GetZoneCompoint的地方。光标单击事件仅在浏览器中调用,对吗?因此,不需要检查x或y,只需首先检查zone=null。在x&y不变的情况下,您双击elementFromPoint检查了哪些内容?我已经完成了这里的工作流程

一些提示: -我有两个叫做A&B的“绝对”DIV对象,B在右下角与A重叠。 -这样使用: var X=parseIntB.offsetLeft; 变量Y=parseIntB.offsetTop; alertdocument.elementFromPointX,Y.innerHTML; -为什么要解析?offsetLeft返回的格式为:number+px -结果是:IE->returna while FF->B -如果是X-1或Y-1,两个浏览器都返回A。
-最后一句话:不要单独使用document.body.clientWidth检查分辨率,请尝试此document.body.clientWidth-o.clientWidth。希望这些能给你一个加电奖励。加油

看来我们的想法是一样的,哈哈。但我正在研究物体碰撞。看,你叫GetZoneCompoint的地方。光标单击事件仅在浏览器中调用,对吗?因此,不需要检查x或y,只需首先检查zone=null。在x&y不变的情况下,您双击elementFromPoint检查了哪些内容?我已经完成了这里的工作流程

一些提示: -我有两个叫做A&B的“绝对”DIV对象,B在右下角与A重叠。 -这样使用: var X=parseIntB.offsetLeft; 变量Y=parseIntB.offsetTop; alertdocument.elementFromPointX,Y.innerHTML; -为什么要解析?offsetLeft返回的格式为:number+px -结果是:IE->returna while FF->B -如果是X-1或Y-1,两个浏览器都返回A。 -最后一句话:不要单独使用document.body.clientWidth检查分辨率,请尝试此document.body.clientWidth-o.clientWidth。希望这些能给你一个加电奖励。加油