elementFromPoint возвращает null, когда он используется в событии onscroll

У меня есть простая html-страница с основным блоком div с фиксированной высотой (с возможностью прокрутки) и двумя маленькими блоками в этом блоке. Я пытаюсь получить текущий элемент в средней точке главного div во время прокрутки. Он хорошо работает во всех браузерах, кроме IE8. В IE8 document.elementFromPoint () возвращает null в событии onscroll для всех возможных значений координат. Кто-нибудь знает обходной путь или решение этой проблемы?

Вот HTML-код:

<div id="mainDiv" style="height:300px;min-height:300px;overflow:auto;" onscroll="mouseScrolled();">
        <div id="div1" style="height:500px;min-height:500px;background-color:blue;display:block;">

    </div>
        <div id="div2" style="height:500px;min-height:500px;background-color:red;display:block;">

        </div>
    </div>

    <span id="debugSpan">
    </span>

javascript:

function mouseScrolled(event) {

        var mainDiv = document.getElementById('mainDiv');
        var x = getXY(mainDiv)[0] + mainDiv.offsetWidth / 2;
        var y = getXY(mainDiv)[1] + mainDiv.offsetHeight / 2;
        var ctr = document.elementFromPoint(x , y);

        document.getElementById('debugSpan').innerHTML = "ClientX=" + x + "<BR>" + "ClientY=" + y +"<BR> Control:" + ctrId;

    }

    function getXY(obj) {
        var curleft = curtop = 0;
        if (obj.offsetParent) {
            do {
                curleft += obj.offsetLeft
                curtop += obj.offsetTop
            }
            while (obj = obj.offsetParent)
        }
        return { x: curleft, y: curtop };
    }
5
задан Community 28 November 2011 в 07:01
поделиться