Обработка поведения по умолчанию при двойном нажатии кнопки - PullRequest
0 голосов
/ 16 августа 2011

Я добавил слушатель события mouseup к диапазону, который будет увеличивать значение в текстовом вводе с помощью js ... представьте себе элементы управления стрелками, которые позволяют пользователю нажимать кнопку увеличения или уменьшения значения. Проблема: если пользователь слишком быстро нажимает на диапазон, Safari / Chrome интерпретирует его как двойной щелчок и начинает выбирать близлежащие элементы и отображать их под синим прямоугольником. В этих браузерах должно быть поведение по умолчанию, которое автоматически выбирает соседний текст в качестве удобной функции при двойном щелчке.

Я попытался добавить событие dblclick, чтобы перехватить это событие и запустить warnDefault (), stopPropagation () или вернуть false. Однако ничего не работает. Я также добавил -user-select: нет; CSS правила для близлежащих предметов. Однако браузер просто пропускает их и находит что-то еще, что можно выделить. Любые мысли о том, как предотвратить такое поведение?

Ответы [ 2 ]

1 голос
/ 16 августа 2011

В заданном обратном вызове события двойного щелчка установите объект, на который вы хотите щелкнуть, как фокус.https://developer.mozilla.org/en/DOM/element.focus

Редактировать: также попробуйте вызвать фокус через короткое время, а не сразу.

Альтернатива описана ниже:

<script type="text/javascript">
    function test() {
        // something
    }
</script>

<style type="text/css">

span::selection,
span *::selection {
    background: transparent;
}
span {
    -moz-user-select: none;
    -khtml-user-select: none;
}

</style>

<span>surrounding text <a href="#" onclick="test(); return false;">Link</a> more text</span>

Двойной щелчок по гиперссылке нене вызывает выделение окружающего текста.Также см. Этот вопрос для функций js, которые удаляют выделение:

Запрет выделения текста после двойного щелчка

0 голосов
/ 04 ноября 2011

Найдя ссылку в комментарии выше, я смог прийти к решению.Идея ... прикрепить событие нажатия к кнопке и проверить ее свойство detail для общего количества нажатий.Если пользователь щелкает более двух раз, вызывайте clearSelection, который очищает элемент DOM «selection».Я также могу добавить класс к определенному блоку текста, который устанавливает выбранный стиль фона на прозрачный, чтобы предотвратить мигание.

Я разместил здесь JSFiddle.

http://jsfiddle.net/vince/Ts85n/

...