Javascript.RU

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

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

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

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

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


Проблема в том, что если человек зажимает левую клавишу мыши, доводит курсор до области, выходящей за рамки окна, отпускает её, затем снова возвращает курсор в окно, то скрипт "считает", что клавиша всё еще зажата и элемент, предназначенный для масштабирования "ходит" вместе с курсором, пока снова не вызовется событие mouseup. Надеюсь, что всё понятно объяснил. Как решить эту проблему?
(Код сильно упростил, поэтому возможны ошибки)
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 05.02.2012, 00:09
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

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

Ну и там ещё по надобности всякие драг-дропы отменить.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 05.02.2012, 00:32
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Я наверно плохо объяснил, минуту.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #4 (permalink)  
Старый 05.02.2012, 00:34
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

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 — снова навожу
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #5 (permalink)  
Старый 05.02.2012, 00:44
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от nasqad
в-третьих кроме event`a доступа к состояниям мыши нет вроде бы
Вот мне вот это третье "вроде-бы" и нужно, то есть наоборот. Может быть есть возможность узнать, ушел ли курсор за область окна?
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #6 (permalink)  
Старый 05.02.2012, 00:48
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

FINoM,
Ну ваще у меня нет это паршивой строки от windows, возможно конечно она творит такие чудеса, но например ФФ пофиг где вы отпускаете клавишу, если событие весит на документе - оно сработает. Если вы используете другой браузер, например Хром и у вас это не работает, попробуйте отлавливать потерю фокуса у окна в то время, когда клавиша была зажата. Должно помочь.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 05.02.2012, 00:54
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

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

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

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

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

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

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

Magneto,
человеку не кнопка нужна а её состояние
Ответить с цитированием
  #10 (permalink)  
Старый 05.02.2012, 01:37
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от nasqad
во-первых событие mouseup происходит вне браузера и не ловится
Например в IE очень даже ловится.

Сообщение от FINoM
если человек зажимает левую клавишу мыши, доводит курсор до области, выходящей за рамки окна,
Может попробовать отслеживать mouseOut на document или window.

Последний раз редактировалось Magneto, 05.02.2012 в 01:43.
Ответить с цитированием
Ответ



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

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


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