Триггер JS/Jquery, когда мышь покидает область просмотра?

Как я могу вызвать функцию, когда моя мышь покидает окно просмотра?

Я слушаю событие «mouseleave» из моего «html». Но в firefox «mouseleave» также срабатывает при двух обстоятельствах. 1. это когда появляется всплывающее окно с предупреждением (сейчас я решаю это, добавляя прослушиватель размытия/фокуса) 2. когда я щелкаю правой кнопкой мыши по странице, и мышь перемещается в меню отображения.

Кажется, что firefox видит это поведение как «mouseleave», даже моя мышь все еще находится на странице.

вот мой код.

$('html').bind('mouseleave',bouncehandler);
var visted = 1;
var bouncehandler = function(e){  
    var yheight = $(window).height();
    if(e.pageX<$('body').width() && e.pageY < yheight ){
       alert('leaving');
       $('html').unbind('mouseleave',bouncehandler);
    }
}

$(window).blur(function(){
   $('html').unbind('mouseleave',bouncehandler);
}).focus(function(){
   if(visited){
       $('html').bind('mouseleave',bouncehandler);
    }
});

Как я могу решить эту проблему ? Спасибо


person Christine Chan    schedule 31.01.2013    source источник
comment
Вы можете перехватывать события пользовательского интерфейса только в окне просмотра, ничего за его пределами, например, поле ввода URL-адреса браузера или кнопка обновления и т. д.   -  person Lowkase    schedule 31.01.2013
comment
Похоже, это может привести к чрезвычайно раздражающему поведению и плохому пользовательскому опыту. Возможно, вы захотите сделать шаг назад и переосмыслить то, чего вы пытаетесь достичь.   -  person jbabey    schedule 31.01.2013
comment
@Lokase: на самом деле мне нужно срабатывать, когда мышь покидает область просмотра (извините, я не назвал это конкретно)   -  person Christine Chan    schedule 01.02.2013
comment
@jbabey: я согласен с тем, что это раздражает. Но это разовое мероприятие, похожее на предоставление купона, когда покупатель покидает нашу страницу электронной рекламы.   -  person Christine Chan    schedule 01.02.2013


Ответы (1)


Вы можете получить положение мыши и любые события мыши только внутри окна просмотра.

Вы можете установить функцию, которая будет выполняться при закрытии браузера, например:

function confirmExit(){
    alert("confirm exit is being called");
    return false;
}

window.onbeforeunload = confirmExit;
person joaobarbosa    schedule 31.01.2013