Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.05.2012, 11:40
Новичок на форуме
Отправить личное сообщение для kalya Посмотреть профиль Найти все сообщения от kalya
 
Регистрация: 22.10.2009
Сообщений: 6

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.
Если кто сталкивался, поделитесь опытом! Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 11.05.2012, 11:53
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

$(document).mouseleave(function (e) {        
e = e || window.event;       
       if (e.pageY - $(window).scrollTop() <= 1) {                   
            alert('Курсор вышел!');                   
       }
});

может так?
Ответить с цитированием
  #3 (permalink)  
Старый 11.05.2012, 12:05
Новичок на форуме
Отправить личное сообщение для kalya Посмотреть профиль Найти все сообщения от kalya
 
Регистрация: 22.10.2009
Сообщений: 6

Пробовал такой вот код для исправления события:

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;
            }


но не помогло
Ответить с цитированием
  #4 (permalink)  
Старый 11.05.2012, 12:17
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

а если просто взять ширину окна браузера и если позици мыши по х больше ширины то значит курсор вне браузера?
Ответить с цитированием
  #5 (permalink)  
Старый 11.05.2012, 12:18
Новичок на форуме
Отправить личное сообщение для kalya Посмотреть профиль Найти все сообщения от kalya
 
Регистрация: 22.10.2009
Сообщений: 6

мне нужно именно по y, так как нужно отследить когда курсор выходит за документ через верх
Ответить с цитированием
  #6 (permalink)  
Старый 11.05.2012, 12:19
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

ну так возьмите высоту окна=)
Ответить с цитированием
  #7 (permalink)  
Старый 11.05.2012, 12:27
Новичок на форуме
Отправить личное сообщение для kalya Посмотреть профиль Найти все сообщения от kalya
 
Регистрация: 22.10.2009
Сообщений: 6

в том то и дело, что в ишаке позиция по y и по x кстати тоже определяется не правильно, возвращает -1 вместо реальных значений. Поэтому способ отловить не очень важен, нужно для этого получить правильные значения координат мышки.
Ответить с цитированием
  #8 (permalink)  
Старый 11.05.2012, 12:33
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

незнаю недавно был скрипт в котором нужно было отслеживать позицию мыши и все работало идеально через clientX & clientY.
вот к примеру код
document.onmousemove = mouseMove

function mouseMove(event){ 
	event = fixEvent(event)
	document.getElementById('mouseX').value = event.pageX
	document.getElementById('mouseY').value = event.pageY
}
Ответить с цитированием
  #9 (permalink)  
Старый 11.05.2012, 12:34
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

а лутчше вот посморите http://javascript.ru/ui/draganddrop#...-drag-and-drop
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекомендации по mouseover и mouseleave vyshik Events/DOM/Window 0 19.03.2012 16:31
События mouseEnter и mouseLeave SlavaMvv Элементы интерфейса 3 15.03.2011 19:44