Отслеживание положения курсора
Подскажите пожалуйста по моему вопросу. Мне нужно отследить перемещение курсора мишки вверх броузера, то есть когда курсор покидает рабочую область документа, и при этом движется на верх (там где табы, меню и т.д.) тогда выплывает событие.
Реализовал вот так (на примере с использованием MooTools, но и без его знания и так все ясно):
document.addEvent('mouseleave', function (e) {
if(e.page.y <= 5) {
console.log('leave');
}
});
работает отлично, но только не в IE (7-9), в IE - когда покидаю рабочею область документа, то e.page.y всегда рано -1, и оно всегда -1, с какой стороны я бы не покидал окно. |
Цитата:
<script src="http://ajax.googleapis.com/ajax/libs/mootools/1.3.2/mootools-yui-compressed.js" type="text/javascript"></script>
<script>
window.addEvent('domready', function() {
document.addEvent('mouseleave', function(event) {
var y = event.page.y;
$$('body').set('html', (y <= 5 ? 'out' : 'in')+' : '+y);
});
});
</script>
|
в IE7 всегда -1
в IE8, если мишку вести очень медленно то сработает корректно, если же нормально (не быстро даже), то -1 |
вообще как и IE отслеживать координаты мыши, если при резком движении мышой такой скрипт:
document.addEvent('mousemove', function (e) {
console.log(e.page.x);
});
видает: Код:
Журнал: 943 ну я не хочу точности до пикселя, но все же где потерялись участки вплоть до 100-150 px |
Как вариант сохраняй последние 3-5 координат мыши, и при событии mouseleave проверяй их, если они идут в порядке убывания (y1 < y2 < y3) то можно сказать что мышка ушла вверх. Ну или как то так.
|
| Часовой пояс GMT +3, время: 21:08. |