Подтвердить что ты не робот

Как временно отключить выделение текста с помощью JavaScript?

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

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

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

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

Спасибо!

4b9b3361

Ответ 1

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

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

EDIT: просто перечитайте вопрос, и вы также можете запретить действие по умолчанию в части вашего кода, которое обрабатывает фактическое перетаскивание, а не только в начальном мышеловке или клике.

Ответ 2

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