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. Если кто сталкивался, поделитесь опытом! Заранее спасибо. |
$(document).mouseleave(function (e) {
e = e || window.event;
if (e.pageY - $(window).scrollTop() <= 1) {
alert('Курсор вышел!');
}
});
может так? |
Пробовал такой вот код для исправления события:
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;
}
но не помогло |
а если просто взять ширину окна браузера и если позици мыши по х больше ширины то значит курсор вне браузера?
|
мне нужно именно по y, так как нужно отследить когда курсор выходит за документ через верх
|
ну так возьмите высоту окна=)
|
в том то и дело, что в ишаке позиция по y и по x кстати тоже определяется не правильно, возвращает -1 вместо реальных значений. Поэтому способ отловить не очень важен, нужно для этого получить правильные значения координат мышки.
|
незнаю недавно был скрипт в котором нужно было отслеживать позицию мыши и все работало идеально через clientX & clientY.
вот к примеру код
document.onmousemove = mouseMove
function mouseMove(event){
event = fixEvent(event)
document.getElementById('mouseX').value = event.pageX
document.getElementById('mouseY').value = event.pageY
}
|
а лутчше вот посморите http://javascript.ru/ui/draganddrop#...-drag-and-drop
|
| Часовой пояс GMT +3, время: 10:49. |