Как я могу временно отключить выбор текста с помощью JavaScript? - PullRequest
16 голосов
/ 21 мая 2009

это немного конкретный вопрос, так что я подойду к делу.

Я работаю над короткой и простой процедурой перетаскивания для части веб-приложения, и хотя бит перетаскивания работает нормально, сайт во время операции выглядит ужасно, потому что браузер по-прежнему выполняет настройки по умолчанию операция и работы по выделению текста.

Я пробовал несколько решений, в основном возвращающих false из событий mousedown или click, и хотя они отключают выделение текста в некоторых браузерах, они также, похоже, полностью отключают событие mouseup, разрушая бит «drop» в скрипте и оставлять эту плавающую в перме иконку висящей вокруг мыши - не весело.

Я не хочу, чтобы выделение текста полностью исчезло, я просто хочу предложить браузеру ... не делать этого при перетаскивании, если это имеет смысл. Так как я знаю область, на которую влияют (присутствуют iframes), я могу легко применить свойство к затронутым элементам и т. Д. Я могу опубликовать код при необходимости, но я ищу более общее решение. Поскольку это только эстетическая вещь, я ищу исправление, которое работает в большинстве браузеров, оно не так уж важно.

Спасибо!

Ответы [ 2 ]

18 голосов
/ 21 мая 2009

В браузерах W3C вы можете вызывать метод preventDefault для объекта event. Эквивалент IE должен установить returnValue на false.

function stopDefault(e) {
    if (e && e.preventDefault) {
        e.preventDefault();
    }
    else {
        window.event.returnValue = false;
    }
    return false;
}

РЕДАКТИРОВАТЬ: просто перечитайте вопрос, и вы также можете запретить действие по умолчанию в той части кода, которая обрабатывает фактическое перетаскивание, а не только при начальном moudown или клике.

0 голосов
/ 21 мая 2009

Насколько я знаю, перетаскиваемый элемент должен располагаться поверх других элементов под указателем мыши. Если он будет перемещаться с помощью указателя мыши, он предотвратит любые выделения на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...