Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.07.2012, 15:35
Интересующийся
Отправить личное сообщение для АлексТраст Посмотреть профиль Найти все сообщения от АлексТраст
 
Регистрация: 06.07.2012
Сообщений: 19

Проблема с обработкой событий мыши firefox
Всем привет, возникла проблема с мышой в лисе.
В хроме, эксплорере нормально работает функция (при перемещении по элементу с нажатой клавишей меняет свою позицию вложенный элемент) А, в лисе не работает по той причине, что нет разницы нажата левая клавиша или никакой не нажато.
function movecursor(obj,ev)
{
if (!ev.which && ev.button) {
if (ev.button & 1) ev.which = 1
else if (ev.button & 4) ev.which = 2
else if (ev.button & 2) ev.which = 3
}

e =window.event;
if (e) ; else e=ev;
if(e.pageX)
{
tmpX = e.pageX + window.pageXOffset;
} else if(e.clientX) {
tmpX = e.clientX + document.body.scrollLeft;
} else {
return false
}

cursor=$(obj).children('.clcursor');
x=0;
objj=obj.parentNode;
while(objj)
{
x += objj.offsetLeft;
objj = objj.offsetParent;
}
b=cursor.position().left-tmpX+x;
a=0;
if ((cursor.position().left-b+cursor.width())>$(obj).width())
{
a=$(obj).width()-cursor.position().left-cursor.width()+b;
}

if(ev.which==1)
{
cursor.css('left',cursor.position().left-b+a); }
}

Спасибо за ответы заранее.
Ответить с цитированием
  #2 (permalink)  
Старый 09.07.2012, 15:56
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

var Flag=false;
$("Cелектор").mouseup(function(){
        Flag=false;
    }).mousedown(function(){
        Flag=true;
    });


Проверяете флаг в Вашей функции на true

Последний раз редактировалось Deff, 09.07.2012 в 16:03.
Ответить с цитированием
  #3 (permalink)  
Старый 09.07.2012, 15:57
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

может нужно так написать
if (ev.button == 1) ev.which = 1
Ответить с цитированием
  #4 (permalink)  
Старый 09.07.2012, 16:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

vadim5june, Если не на jQuery
Имхо тут должно быть условие для

e =селектор.onmousedown&&window.event;
Ответить с цитированием
  #5 (permalink)  
Старый 09.07.2012, 16:20
Интересующийся
Отправить личное сообщение для АлексТраст Посмотреть профиль Найти все сообщения от АлексТраст
 
Регистрация: 06.07.2012
Сообщений: 19

Deff,
Примерно так пробовал, работает плохо - косяк за счет наведения на остальные вложенные объекты ( в том числе на курсор) + можно нажать клавишу на элементе, а отпустить на другом.
vadim5june,
Это спецом для IE написано побитовая операция, в мозилле не используется. Можно написать, конечно и так, только не поможет.

Проблем с получением объекта event не наблюдается, наблюдается отсутствие разницы между нажатием левой клавиши и просто отсутствием нажатия мыша.
Ответить с цитированием
  #6 (permalink)  
Старый 09.07.2012, 16:23
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от АлексТраст
Примерно так пробовал, работает плохо - косяк за счет наведения на остальные вложенные объекты ( в том числе на курсор) + можно нажать клавишу на элементе, а отпустить на другом.
Выберите в качестве селектора (или создайте достаточное обрамление вокруг поля действия
На крайняк - $("body").mouseup(function(){ //Хотя body имхо излишне - нун сокращать по минимуму

Последний раз редактировалось Deff, 09.07.2012 в 16:32.
Ответить с цитированием
  #7 (permalink)  
Старый 09.07.2012, 16:32
Интересующийся
Отправить личное сообщение для АлексТраст Посмотреть профиль Найти все сообщения от АлексТраст
 
Регистрация: 06.07.2012
Сообщений: 19

Deff,
Эти события не различают клавиш.


В принципе мне не важно, использовать jq или нет, главное решение задачи.
Ответить с цитированием
  #8 (permalink)  
Старый 09.07.2012, 16:42
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от АлексТраст Посмотреть сообщение
Примерно так пробовал, работает плохо - косяк за счет наведения на остальные вложенные объекты ( в том числе на курсор) + можно нажать клавишу на элементе, а отпустить на другом.
mouseup нужно вешать на window(document.body) тогда проблем не будет
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отписать блок от событий мыши Urchin Общие вопросы Javascript 11 05.03.2013 08:52
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
Проблема: Остановка всплытия событий (Firefox) abc_ua Events/DOM/Window 4 09.03.2011 02:28
Проблема закрытия окна (window.close()) в Mozilla и FireFox Гость AJAX и COMET 4 06.11.2008 19:22
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43