Ответ 1
Попробуйте предотвратить по умолчанию событие mousedown:
<div onmousedown="event.preventDefault ? event.preventDefault() : event.returnValue = false">asd</div>
или
<div onmousedown="return false">asd</div>
Я работаю над веб-приложением, для которого я пытаюсь реализовать полнофункциональную оконную систему. Сейчас все идет очень хорошо, я сталкиваюсь только с одной незначительной проблемой. Иногда, когда я перетаскиваю часть своего приложения (чаще всего это angular элемент моего окна, который должен вызывать операцию изменения размера), веб-браузер становится умным и думает, что я хочу что-то перетащить. Конечный результат, мое действие приостанавливается, пока браузер выполняет функцию перетаскивания.
Есть ли простой способ отключить браузер перетаскивания? В идеале я хотел бы иметь возможность отключить его, пока пользователь нажимает на определенные элементы, но повторно включить его, чтобы пользователи могли по-прежнему использовать обычную функциональность своего браузера в содержимом моих окон. Я использую jQuery, и хотя я не смог найти его, просматривая документы, если бы вы знали чистое решение jQuery, это было бы отлично.
Вкратце: мне нужно отключить выбор текста в браузере и функции перетаскивания, когда мой пользователь нажимает кнопку мыши, и восстановить эту функцию, когда пользователь отпускает мышь.
Попробуйте предотвратить по умолчанию событие mousedown:
<div onmousedown="event.preventDefault ? event.preventDefault() : event.returnValue = false">asd</div>
или
<div onmousedown="return false">asd</div>
Эта вещь работает..... Попробуйте.
<BODY ondragstart="return false;" ondrop="return false;">
надеюсь, что это поможет. Благодаря
Вы можете отключить перетаскивание, просто используя атрибут draggable="false"
.
http://www.w3schools.com/tags/att_global_draggable.asp
Это может сработать: вы можете отключить выбор с помощью css3 для текста, изображения и в основном всего.
.unselectable {
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
/*
Introduced in IE 10.
See http://ie.microsoft.com/testdrive/HTML5/msUserSelect/
*/
-ms-user-select: none;
user-select: none;
}
Конечно, только для новых браузеров. Подробнее:
С jQuery будет что-то вроде этого:
$(document).ready(function() {
$('#yourDiv').on('mousedown', function(e) {
e.preventDefault();
});
});
В моем случае я хотел отключить пользователя из текста с отбрасыванием в вводах, поэтому вместо "mousedown" вместо "mousedown" использовал "drop".
$(document).ready(function() {
$('input').on('drop', function(event) {
event.preventDefault();
});
});
Вместо event.preventDefault() вы можете вернуть false. Здесь разница.
И код:
$(document).ready(function() {
$('input').on('drop', function() {
return false;
});
});
попробуйте это
$('#id').on('mousedown', function(event){
event.preventDefault();
}
Для элементов input
этот ответ работает для меня.
Я реализовал это на пользовательском компоненте ввода в Angular 4, но я думаю, что это можно реализовать с помощью чистого JS.
HTML
<input type="text" [(ngModel)]="value" (ondragenter)="disableEvent($event)"
(dragover)="disableEvent($event)" (ondrop)="disableEvent($event)"/>
Определение компонента (JS):
export class CustomInputComponent {
//component construction and attribute definitions
disableEvent(event) {
event.preventDefault();
return false;
}
}
используя ответ @SyntaxError, fooobar.com/questions/73967/...
Мне удалось сделать это в React; единственный способ, которым я мог понять, - это прикрепить методы ondragstart и ondrop к ссылке, например так:
const panelManagerBody = React.createRef<HTMLDivElement>();
useEffect(() => {
if (panelManagerBody.current) {
panelManagerBody.current.ondragstart = () => false;
panelManagerBody.current.ondrop = () => false;
}
}, [panelManagerBody]);
return (
<div ref={panelManagerBody}>
Я просто оставлю это здесь. Помог мне после того, как я попробовал все.
$(document.body).bind("dragover", function(e) {
e.preventDefault();
return false;
});
$(document.body).bind("drop", function(e){
e.preventDefault();
return false;
});
Этот JQuery работал у меня: -
$(document).ready(function() {
$('#con_image').on('mousedown', function(e) {
e.preventDefault();
});
});