So entfernen Sie Geisterbilder, wenn Sie das Bild ziehen. Wir haben Code ausprobiert, er funktioniert in Firefox und Chrome, aber nicht in Safari. Bitte helfen Sie mir, was der Fehler in meinem Code ist. https://jsfiddle.net/rajamsr/Lfuq5qb6/
Dieser Code hier lässt meinen Speicher auf 100 % springen, wenn ich anfange, das Bild zu ziehen. Soll er das tun, und warum möchten Sie das Ziehen des Bildes ausblenden?
– madalinivascu
29. Juli 2016 um 10:12 Uhr
Sie können die Anzeige der Geistervorschau verhindern, indem Sie ein leeres/transparentes Bild anzeigen:
document.addEventListener("dragstart", function( event ) {
var img = new Image();
img.src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=";
event.dataTransfer.setDragImage(img, 0, 0);
}, false);
Dies scheint für Chromium-Browser nicht gut zu funktionieren, es wird immer noch ein kleines „Globus“-Symbol angezeigt.
– Mlyck
4. Januar um 14:03
Benutzen Sie das nicht event.target als Argument dafür setDragImagedies ist wahrscheinlich die Ursache für die Speicherprobleme hier.
Sie können jederzeit ein benutzerdefiniertes Bild hinzufügen. Das Bild könnte auch ein transparentes PNG sein.
Hier ist ein Beispiel, wie das geht.
var dragMe = document.getElementById("drag-me"),
img = new Image();
img.onload = function () {
dragMe.addEventListener("dragstart", function(e) {
e.dataTransfer.setDragImage(img, 0, 0);
}, false);
}
img.src = "http://placehold.it/150/000000/ffffff?text=GHOST";
Eine andere Möglichkeit wäre, einfach das Knotenelement zu klonen und festzulegen visibility Zu hidden. Damit diese Option funktioniert, ist es jedoch erforderlich, das geklonte Element zum DOM hinzuzufügen.
Ein Beispiel mit dem geklonten Knoten könnte so aussehen. Ich verstecke den Knoten nicht vollständig, damit Sie sehen können, was passiert.
var dragMe = document.getElementById("drag-me");
dragMe.addEventListener("dragstart", function(e) {
var clone = this.cloneNode(true);
clone.style.opacity = 0.1; // use opacity or
//clone.style.visibility = "hidden"; // visibility or
//clone.style.display = "none"; // display rule
document.body.appendChild(clone);
e.dataTransfer.setDragImage(clone, 0, 0);
}, false);
Verwenden Sie stattdessen CSS, um das Ziehen/Auswählen durch den Benutzer zu stoppen. Dies funktioniert in den meisten Browsern, aber es gibt anscheinend einen Fehler in Firefox, der dazu führt, dass es nicht funktioniert, also fügen Sie es hinzu ondragstart="return false;" Zu img Tags, um dieses Problem zu beheben, siehe https://jsfiddle.net/Lfuq5qb6/1/
Dieser Code hier lässt meinen Speicher auf 100 % springen, wenn ich anfange, das Bild zu ziehen. Soll er das tun, und warum möchten Sie das Ziehen des Bildes ausblenden?
– madalinivascu
29. Juli 2016 um 10:12 Uhr