Отслеживание положения курсора
Подскажите пожалуйста по моему вопросу. Мне нужно отследить перемещение курсора мишки вверх броузера, то есть когда курсор покидает рабочую область документа, и при этом движется на верх (там где табы, меню и т.д.) тогда выплывает событие.
Реализовал вот так (на примере с использованием 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, время: 07:37. |