Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.02.2012, 22:59
Аватар для FINoM
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 1,507

Как узнать, что левая клавиша мыши не зажата
Делаю элемент, который можно растягивать.

var mousedown;
document.addEventListener('mousemove', function(){
    if( mousedown /* && вот здесь нужно как-то узнать, что клавиша мыши не зажата */) {
       resizeDiv();
    }
});

el.addEventListener('mousedown', function(){
    mousedown = true;
});

el.addEventListener('mouseup', function(){
    mousedown = false;
});


Проблема в том, что если человек зажимает левую клавишу мыши, доводит курсор до области, выходящей за рамки окна, отпускает её, затем снова возвращает курсор в окно, то скрипт "считает", что клавиша всё еще зажата и элемент, предназначенный для масштабирования "ходит" вместе с курсором, пока снова не вызовется событие mouseup. Надеюсь, что всё понятно объяснил. Как решить эту проблему?
(Код сильно упростил, поэтому возможны ошибки)
__________________
Javascript - прога чтобы в браузерах рисовать. ©Livaanderiamarum
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2012, 23:09
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 932

<body>
<div id="test">test</div>
<script>
document.getElementById('test').addEventListener('mousedown', function(e){
document.body.appendChild(document.createTextNode('|down'));
e.preventDefault();
document.addEventListener('mouseup', function mouseup(){
document.body.appendChild(document.createTextNode('|up'));
document.removeEventListener('mouseup', mouseup, false)
},false)
}, false);
</script>
</body>

Ну и там ещё по надобности всякие драг-дропы отменить.
__________________
[23:50:17 MSK] Андрей: теперь знаю что гуглить по ключевым словам тоже можно)
Ответить с цитированием
  #3 (permalink)  
Старый 04.02.2012, 23:32
Аватар для FINoM
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 1,507

Я наверно плохо объяснил, минуту.
__________________
Javascript - прога чтобы в браузерах рисовать. ©Livaanderiamarum
Ответить с цитированием
  #4 (permalink)  
Старый 04.02.2012, 23:34
Аватар для FINoM
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 1,507

1. http://my.jetscreenshot.com/6628/20120204-7v41-9kb — зажимаю клавишу.
2. http://my.jetscreenshot.com/6628/20120204-fitx-66kb — переношу курсор, отпускаю клавишу
3. http://my.jetscreenshot.com/6628/20120204-7v41-9kb — снова навожу
__________________
Javascript - прога чтобы в браузерах рисовать. ©Livaanderiamarum
Ответить с цитированием
  #5 (permalink)  
Старый 04.02.2012, 23:41
Аватар для nasqad
Куратор
Отправить личное сообщение для nasqad Посмотреть профиль Найти все сообщения от nasqad
 
Регистрация: 18.09.2011
Сообщений: 450

никак нельзя
во-первых событие mouseup происходит вне браузера и не ловится
во-вторых event не содержит никаких данных о зажатости клавиши мыши
в-третьих кроме event`a доступа к состояниям мыши нет вроде бы
Ответить с цитированием
  #6 (permalink)  
Старый 04.02.2012, 23:44
Аватар для FINoM
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 1,507

Сообщение от nasqad
в-третьих кроме event`a доступа к состояниям мыши нет вроде бы
Вот мне вот это третье "вроде-бы" и нужно, то есть наоборот. Может быть есть возможность узнать, ушел ли курсор за область окна?
__________________
Javascript - прога чтобы в браузерах рисовать. ©Livaanderiamarum
Ответить с цитированием
  #7 (permalink)  
Старый 04.02.2012, 23:48
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 932

FINoM,
Ну ваще у меня нет это паршивой строки от windows, возможно конечно она творит такие чудеса, но например ФФ пофиг где вы отпускаете клавишу, если событие весит на документе - оно сработает. Если вы используете другой браузер, например Хром и у вас это не работает, попробуйте отлавливать потерю фокуса у окна в то время, когда клавиша была зажата. Должно помочь.
__________________
[23:50:17 MSK] Андрей: теперь знаю что гуглить по ключевым словам тоже можно)
Ответить с цитированием
  #8 (permalink)  
Старый 04.02.2012, 23:54
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 522

if (event.which == 1) // если нажата левая клавиша

1 - левая
2 - колесик
3 - правая

Вроде так, кажется я ответил только на название темы ))

А в каком браузере не обрабатывается Апп вне браузера?

Последний раз редактировалось Magneto, 05.02.2012 в 00:00.
Ответить с цитированием
  #9 (permalink)  
Старый 05.02.2012, 00:10
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 497

если растягиваемый элемент в контейнере, то может можно в mousemove проверить координаты мыши и сравнить с координатами контейнера)
__________________
Англоязычное не предлагать
Ответить с цитированием
  #10 (permalink)  
Старый 05.02.2012, 00:11
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 497

Magneto,
человеку не кнопка нужна а её состояние
__________________
Англоязычное не предлагать
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно узнать что value в INPUT изменилось? moskrc jQuery 2 22.10.2010 08:06
Как узнать о том, что флэш уже загрузился. Snipe Общие вопросы Javascript 4 29.01.2009 10:21
Как узнать, что содержит onClick? PHPNoob Events/DOM/Window 2 28.08.2008 06:12
Как узнать, что IFRAME загрузился? DeUre Общие вопросы Javascript 4 01.08.2008 13:09
Как узнать что находится в <label></label> duke_nu Events/DOM/Window 4 22.04.2008 20:53