152 Stimmen

Ziehen und Ablegen bei HTML-Elementen deaktivieren?

Ich arbeite an einer Webanwendung, für die ich versuche, ein vollwertiges Fenstersystem zu implementieren. Im Moment läuft es sehr gut, ich bin nur in ein kleines Problem laufen. Manchmal, wenn ich einen Teil meiner Anwendung ziehen will (meistens die Ecke meines Fensters, die eine Größenänderung auslösen soll), wird der Webbrowser schlau und denkt, ich wolle etwas ziehen und ablegen. Das Endergebnis ist, dass meine Aktion auf Eis gelegt wird, während der Browser seine Drag-and-Drop-Funktion ausführt.

Gibt es eine einfache Möglichkeit, die Drag&Drop-Funktion des Browsers zu deaktivieren? Im Idealfall möchte ich es ausschalten können, während der Benutzer auf bestimmte Elemente klickt, aber es wieder aktivieren, so dass die Benutzer immer noch ihre normale Funktionalität des Browsers auf den Inhalt meines Windows verwenden können. Ich verwende jQuery, und obwohl ich nicht in der Lage war, es zu finden, die Dokumente durchsuchen, wenn Sie eine reine jQuery-Lösung kennen, wäre es ausgezeichnet.

Kurz gesagt: Ich muss die Textauswahl und die Drag-and-Drop-Funktionen des Browsers deaktivieren, solange der Benutzer die Maustaste gedrückt hält, und diese Funktionen wiederherstellen, wenn der Benutzer die Maus loslässt.

3 Stimmen

Ich würde vorschlagen, dass die Antwort von @SyntaxError (unten, 100+ Stimmen) die ausgewählte Antwort sein sollte, da sie keine Auswirkungen auf andere Operationen als das Ziehen hat.

0voto

Dexter Punkte 56

Die Frage ist alt, aber es ist nie zu spät, sie zu beantworten.

$(document).ready(function() {
  //prevent drag and drop
  const yourInput = document.getElementById('inputid');
  yourInput.ondrop = e => e.preventDefault();

  //prevent paste
  const Input = document.getElementById('inputid');
  Input.onpaste = e => e.preventDefault();
});

0voto

Tanima Punkte 21

Sie können einfach draggable="false" für das Element selbst verwenden, oder Sie können

on-mousedown="preventDefaultDrag"
...
preventDefaultDrag: function(ev) {
   ev.preventDefault();
},

-1voto

Piyush Punkte 7

Dieses JQuery hat bei mir funktioniert :-

$(document).ready(function() {
  $('#con_image').on('mousedown', function(e) {
      e.preventDefault();
  });
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X