Ich arbeite an einer Webanwendung, für die ich versuche, ein voll funktionsfähiges Fenstersystem zu implementieren. Im Moment läuft es sehr gut, ich stoße nur auf ein kleines Problem. Manchmal, wenn ich einen Teil meiner Anwendung ziehe (meistens den Eckbereich meines Fensters, der einen Größenänderungsvorgang auslösen soll), wird der Webbrowser clever und denkt, ich möchte etwas ziehen und ablegen. Im Endergebnis wird meine Aktion angehalten, während der Browser das Ziehen und Ablegen ausführt.
Gibt es eine einfache Möglichkeit, das Drag & Drop des Browsers zu deaktivieren? Ich möchte es idealerweise deaktivieren können, während der Benutzer auf bestimmte Elemente klickt, es aber wieder aktivieren, damit Benutzer weiterhin die normalen Funktionen ihres Browsers für den Inhalt meiner Fenster verwenden können. Ich verwende jQuery, und obwohl ich es nicht in den Dokumenten finden konnte, wäre es ausgezeichnet, wenn Sie eine reine jQuery-Lösung kennen.
Kurz gesagt: Ich muss die Browsertextauswahl und Drag & Drop-Funktionen deaktivieren, während mein Benutzer die Maustaste gedrückt hält, und diese Funktionalität wiederherstellen, wenn der Benutzer die Maus loslässt.
quelle
Antworten:
Versuchen Sie, die Standardeinstellung für das Mousedown-Ereignis zu verhindern:
oder
quelle
:active
Pseudoklasse auf das Element angewendet wird. Dies bedeutet, dass ich es nicht wirklich für meine Links verwenden kann.Dieses Ding funktioniert ..... Probieren Sie es aus.
ich hoffe es hilft. Vielen Dank
quelle
<div>
Element gesetzt werden.)copy paste
Listener scheint dies die perfekte Lösung zu sein, um einen Benutzer zu zwingen, die Eingabe einzugeben, anstatt etwas einzufügen / hineinzuziehen, ohne andere Teile der Seite zu beeinträchtigen.Sie können das Ziehen einfach mithilfe eines
draggable="false"
Attributs deaktivieren .http://www.w3schools.com/tags/att_global_draggable.asp
quelle
Dies könnte funktionieren: Sie können die Auswahl mit CSS3 für Text, Bild und im Grunde alles deaktivieren.
Natürlich nur für die neueren Browser. Weitere Details finden Sie unter:
Wie deaktiviere ich die Hervorhebung der Textauswahl mithilfe von CSS?
quelle
div
, aber mit deaktiviertem Ziehen.Mit jQuery wird es ungefähr so sein:
In meinem Fall wollte ich den Benutzer daran hindern, Text in den Eingaben abzulegen, also habe ich "drop" anstelle von "mousedown" verwendet.
Stattdessen können Sie event.preventDefault () false zurückgeben. Hier ist der Unterschied.
Und der Code:
quelle
Dies ist eine Geige, die ich immer mit meinen Webanwendungen verwende:
Dadurch wird verhindert, dass etwas in Ihrer App per Drag & Drop verschoben wird. Abhängig von den Touranforderungen können Sie den Body Selector durch einen Container ersetzen , den Kinder nicht ziehen sollten.
quelle
Versuche dies
quelle
Für
input
Elemente funktioniert diese Antwort für mich.Ich habe es auf einer benutzerdefinierten Eingabekomponente in Angular 4 implementiert, aber ich denke, es könnte mit reinem JS implementiert werden.
HTML
Komponentendefinition (JS):
quelle
Verwenden Sie die Antwort von @ SyntaxError unter https://stackoverflow.com/a/13745199/5134043
Ich habe es geschafft, dies in React zu tun. Der einzige Weg, den ich herausfinden konnte, bestand darin, die Methoden ondragstart und ondrop wie folgt an einen Schiedsrichter anzuhängen:
quelle
Ich werde es einfach hier lassen. Hat mir geholfen, nachdem ich alles versucht habe.
quelle
Diese JQuery hat für mich funktioniert: -
quelle