Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   mouseleave in IE, pageY = -1 (https://javascript.ru/forum/events/28211-mouseleave-ie-pagey-%3D-1-a.html)

kalya 11.05.2012 11:40

mouseleave in IE, pageY = -1
 
Привет всем!

Возникла такая проблема. Нужно отследить, когда курсор мыши выходит за окно ВВЕРХУ. На просторах интернета нашел такую реализацию:

$(document).mouseleave(function (e) {               
       if (e.pageY - $(window).scrollTop() <= 1) {                   
            alert('Курсор вышел!');                   
       }
});


Этот код не работает в IE в том плане, что если включена developer tab, то при выводе курсора вниз за эту табку, pageY становится равным -1 тогда, как в FF или Chrome он равен 600-700px, т.е. реальному значению Y.
Как получить в IE адекватное значение Y? Пробовал различного рода код для исправления event в IE, все равно выдает -1.
Если кто сталкивался, поделитесь опытом! Заранее спасибо.

cyber 11.05.2012 11:53

$(document).mouseleave(function (e) {        
e = e || window.event;       
       if (e.pageY - $(window).scrollTop() <= 1) {                   
            alert('Курсор вышел!');                   
       }
});

может так?

kalya 11.05.2012 12:05

Пробовал такой вот код для исправления события:

function fixEvent(e) {
                // получить объект событие для IE
                e = e || window.event
                // добавить pageX/pageY для IE
                if (e.pageX == null && e.clientX != null) {
                    var html = document.documentElement;
                    var body = document.body;
                    e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
                    e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
                }

                return e;
            }


но не помогло

cyber 11.05.2012 12:17

а если просто взять ширину окна браузера и если позици мыши по х больше ширины то значит курсор вне браузера?

kalya 11.05.2012 12:18

мне нужно именно по y, так как нужно отследить когда курсор выходит за документ через верх

cyber 11.05.2012 12:19

ну так возьмите высоту окна=)

kalya 11.05.2012 12:27

в том то и дело, что в ишаке позиция по y и по x кстати тоже определяется не правильно, возвращает -1 вместо реальных значений. Поэтому способ отловить не очень важен, нужно для этого получить правильные значения координат мышки.

cyber 11.05.2012 12:33

незнаю недавно был скрипт в котором нужно было отслеживать позицию мыши и все работало идеально через clientX & clientY.
вот к примеру код
document.onmousemove = mouseMove

function mouseMove(event){ 
	event = fixEvent(event)
	document.getElementById('mouseX').value = event.pageX
	document.getElementById('mouseY').value = event.pageY
}

cyber 11.05.2012 12:34

а лутчше вот посморите http://javascript.ru/ui/draganddrop#...-drag-and-drop


Часовой пояс GMT +3, время: 13:59.