ondrag begivenhed
Definition og brug
ondrag-eventet udløses, når elementet eller tekstvalget trækkes.
Drag-and-drop er en meget almindelig funktion i HTML5. Det er når du "fanger" et objekt og trækker det til en anden placering. For at lære mere, læs vores om HTML5 træk og slipHTML-tutorials.
Bemærkninger:For at gøre et element trækkeligt skal du bruge global HTML5 draggable-attributten.
Tip:Som standard er links og billeder trækkelige uden behov for draggable-attributten.
Der bruges mange forskellige event under træk-og-slip-operationer, og de kan ske:
Event, der udløses på kilden (kildeelementet):
- ondragstart - Når brugeren begynder at trække elementet
- ondrag - Når elementet trækkes
- ondragend - Når brugeren afslutter at trække elementet
Event, der udløses på målet:
- ondragenter - Når den trukne element kommer ind i målet
- ondragover - Når den trukne element er på målet
- ondragleave - Når den trukne element forlader målet
- ondrop - Når den trukne element placeres på målet
Bemærkninger:Når elementet trækkes, udløses ondrag-eventet hver 350 millisekunder.
Eksempel
Udfør JavaScript, når <p>-elementet trækkes:
<p draggable="true" ondrag="myFunction(event)">Træk mig!</p>
Der er flere TIY-eksempler nedenfor på siden.
Syntaks
I HTML:
<element ondrag="myScript">
I JavaScript:
object.ondrag = function(){myScript};
I JavaScript bruges addEventListener() metoden:
object.addEventListener("drag", myScript);
Bemærkninger:Internet Explorer 8 eller tidligere versioner understøtter ikke addEventListener() metoden.
Teknisk detalje
Bobbelig: | Understøttet |
---|---|
Kan annulleres: | Understøttet |
Eventtype: | DragEvent |
Understøttede HTML-mærker: | Alle HTML-elementer |
DOM version: | Level 3 Events |
Browserunderstøttelse
Tallene i tabellen angiver den første browserversion, der fuldt ud understøtter dette event.
Event | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
ondrag | 4.0 | 9.0 | 3.5 | 6.0 | 12.0 |
Flere eksempler
Demonstration af alle mulige træk-og-slip hændelser:
<p draggable="true" id="dragtarget">Træk mig!</p> <div class="droptarget">Sæt her!</div> <script> /* ----------------- Hændelser der udløses på trækningsmålet ----------------- */ document.addEventListener("dragstart", function(event) { // dataTransfer.setData() metoden sætter datatypen og værdien for det trukne data event.dataTransfer.setData("Text", event.target.id); // Udfør nogle tekster, når p-elementet begynder at trækkes document.getElementById("demo").innerHTML = "Begyndte at trække p-elementet."; // Ændr uigennemskinneligheden for den trækbare element event.target.style.opacity = "0.4"; }); // Ændr farven på outputteksten, når p-elementet trækkes document.addEventListener("drag", function(event) { document.getElementById("demo").style.color = "red"; }); // Udfør nogle tekster og nulstil uigennemskinnelighed efter at have trukket p-elementet document.addEventListener("dragend", function(event) { document.getElementById("demo").innerHTML = "Færdig med at trække p-elementet."; event.target.style.opacity = "1"; }); /* ----------------- Hendelser som utløses på plasseringsmålet ----------------- */ // Når det traggable p-elementet kommer inn i droptarget, endre kantstilen til DIV document.addEventListener("dragenter", function(event) { if ( event.target.className == "droptarget" ) { event.target.style.border = "3px dotted red"; } }); // Som standard kan du ikke plassere data/elementer i andre elementer. For å tillate plassering, må vi forhindre elementets standardhåndtering document.addEventListener("dragover", function(event) { event.preventDefault(); }); // Når den traggable p-elementet forlater droptarget, nullstill kantstilen til DIV document.addEventListener("dragleave", function(event) { if ( event.target.className == "droptarget" ) { event.target.style.border = ""; } }); /* På dropp - Forhindre nettleseren i å håndtere dataene som standard (åpne som lenke ved standard plassering) Nullstill utdataens farge og DIVens kantfarge Hent de trukne dataene ved hjælp av metoden dataTransfer.getData() De trukne dataene er ID-en til det trukne elementet ("drag1") Tilføj det trukne element til det plasseringselementet */ document.addEventListener("drop", function(event) { event.preventDefault(); if ( event.target.className == "droptarget" ) { document.getElementById("demo").style.color = ""; event.target.style.border = ""; var data = event.dataTransfer.getData("Text"); event.target.appendChild(document.getElementById(data)); } }); </script>