Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блокировка mousemove при нажатой кнопке мыши 
V
    Опции темы
nikitos1980
Дата 26.2.2012, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Добрый день
В моем скрипте я перемещаю графический бегунок по горизонтали. Суть в том, чтобы когда было нажатие на самом бегунке (и кнопка не отпущена), то бегунок двигался за курсором.
При событии mousedown на бегунке я добавляю контейнеру обработчик события mousemove. Начинаю двигать крусор мыши и бегунок следует за мышью, но почти сразу браузер останавливает обработку события (показывается значок черного увета в виде перечеркнутого круга) и затем, только когда отпустить кнопку мыши продолжается обработка перемещения курсора и бегунок следует за курсором.
Я делал различные тесты и обнаружил, что при обработке события mousemove при нажатой кнопке мыши эта проблема возникает.

Подскажите, кто столкнулся с такой проблемой и можно ли как-то обойти эту особенность браузеров?
PM MAIL WWW   Вверх
$дмитрий
Дата 26.2.2012, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 2
Всего: 45



Нужно запретить браузеру выделение.
Готовый код для Jquery

Код

jQuery.fn.extend({
    disableSelect:function(){
        this.each(function(){
            this.onselectstart = function() { return false; };
            this.unselectable = "on";
            jQuery(this).css('-moz-user-select', 'none');
    });
}, enableSelect:function(){
    this.each(function(){
        this.onselectstart = function(){};
        this.unselectable = "off";
        jQuery(this).css('-moz-user-select', 'auto');
    });
}});

///////

$('body').disableSelect(); // запрещает выделение
$('body').enableSelect(); // разрешает выделение




PM MAIL   Вверх
magelan
Дата 29.2.2012, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 2
Всего: 16



onselectstart тут не при чем, его хорошо запрещать, чтобы не было визуальных артефактов.
за описанное поведение отвечает событие ondragstart.
PM MAIL   Вверх
nikitos1980
Дата 29.2.2012, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



magelan, $дмитрий, спасибо!
Решение от magelan оказалось самым что ни есть верным! Добавил код при начале пермещения (нажатие левой кнопки мыши):
document.ondragstart = function()
{
    return false;
}

А при окончании перемещения (отпускание мыши):
document.ondragstart = function(){}

Работает отлично!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.