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>

Prøv det selv

Der er flere TIY-eksempler nedenfor på siden.

Syntaks

I HTML:

<element ondrag="myScript">

Prøv det selv

I JavaScript:

object.ondrag = function(){myScript};

Prøv det selv

I JavaScript bruges addEventListener() metoden:

object.addEventListener("drag", myScript);

Prøv det selv

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>

Prøv det selv

Relaterede sider

HTML undervisning:HTML5 træk og slip

HTML referencer:HTML draggable egenskab