Как временно отключить выделение текста с помощью JavaScript?
Это немного конкретный вопрос, поэтому я сразу пойду.
Я работаю над простой и простой процедурой перетаскивания для части веб-приложения, и хотя бит перетаскивания и удаления работает нормально, на этом сайте происходит все уродливое tastic во время операции, потому что браузер по-прежнему выполняет по умолчанию и работает при выборе текста.
Я пробовал несколько решений, в основном связанных с возвратом false из событий mousedown или click, и хотя они отключили выбор текста в некоторых браузерах, они также, похоже, полностью отключили событие mouseup, разрушая бит "drop" в script и оставляя эту перма-плавающую иконку, висящую вокруг мыши - не весело.
Я действительно не хочу, чтобы выбор текста полностью исчез, я просто хочу предложить, чтобы браузер... не делал этого при перетаскивании, если это имеет смысл. Поскольку я знаю область, которая затронута (есть iframes), я могу легко применить свойство к затронутым элементам и т.д. Я могу при необходимости отправить код, но я ищу больше общего решения. Поскольку это только эстетическая вещь, я ищу исправление, которое работает в большинстве браузеров, но это не так важно.
Спасибо!
Ответы
Ответ 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
Насколько я знаю, элемент перетаскивания должен располагаться над другими элементами под указателем мыши. Если он будет перемещаться с указателем мыши, это предотвратит любые выборы на странице.