Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отслеживание положения курсора (https://javascript.ru/forum/misc/18274-otslezhivanie-polozheniya-kursora.html)

beat 24.06.2011 10:55

Отслеживание положения курсора
 
Подскажите пожалуйста по моему вопросу. Мне нужно отследить перемещение курсора мишки вверх броузера, то есть когда курсор покидает рабочую область документа, и при этом движется на верх (там где табы, меню и т.д.) тогда выплывает событие.

Реализовал вот так (на примере с использованием MooTools, но и без его знания и так все ясно):

document.addEvent('mouseleave', function (e) {
    if(e.page.y <= 5) {
        console.log('leave');
    } 
});


работает отлично, но только не в IE (7-9), в IE - когда покидаю рабочею область документа, то e.page.y всегда рано -1, и оно всегда -1, с какой стороны я бы не покидал окно.

monolithed 24.06.2011 19:13

Цитата:

Сообщение от beat
в IE - когда покидаю рабочею область документа, то e.page.y всегда рано -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>

beat 24.06.2011 19:42

в IE7 всегда -1
в IE8, если мишку вести очень медленно то сработает корректно, если же нормально (не быстро даже), то -1

beat 25.06.2011 10:43

вообще как и IE отслеживать координаты мыши, если при резком движении мышой такой скрипт:
document.addEvent('mousemove', function (e) {
   console.log(e.page.x);
});

видает:

Код:

Журнал: 943
Журнал: 1088
Журнал: 1171
Журнал: 1285
Журнал: 1423


ну я не хочу точности до пикселя, но все же где потерялись участки вплоть до 100-150 px

walik 25.06.2011 10:46

Как вариант сохраняй последние 3-5 координат мыши, и при событии mouseleave проверяй их, если они идут в порядке убывания (y1 < y2 < y3) то можно сказать что мышка ушла вверх. Ну или как то так.


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