evento de arrastar
Exemplo
Execute um JavaScript quando um elemento <p> estiver sendo arrastado:
<p draggable="true" ondrag="myFunction(event)">Drag me!</p>
Mais exemplos de "Experimente você mesmo" abaixo.
Definição e uso
O evento ondrag ocorre quando um elemento ou seleção de texto está sendo arrastado.
Arrastar e soltar é um recurso muito comum em HTML5. É quando você "pega" um objeto e o arrasta para um local diferente. Para obter mais informações, consulte nosso Tutorial HTML sobre arrastar e soltar HTML5 .
Nota: Para tornar um elemento arrastável, use o atributo global HTML5 arrastável .
Dica: Links e imagens são arrastáveis por padrão e não precisam do atributo arrastável.
Existem muitos eventos que são usados e podem ocorrer nos diferentes estágios de uma operação de arrastar e soltar:
- Eventos disparados no destino arrastável (o elemento de origem) :
- ondragstart - ocorre quando o usuário começa a arrastar um elemento
- ondrag - ocorre quando um elemento está sendo arrastado
- ondragend - ocorre quando o usuário termina de arrastar o elemento
- Eventos disparados no destino de lançamento:
- ondragenter - ocorre quando o elemento arrastado entra no destino de soltar
- ondragover - ocorre quando o elemento arrastado está sobre o destino de soltar
- ondragleave - ocorre quando o elemento arrastado deixa o destino de soltar
- ondrop - ocorre quando o elemento arrastado é solto no destino de soltar
Nota: Ao arrastar um elemento, o evento ondrag é acionado a cada 350 milissegundos.
Suporte ao navegador
Os números na tabela especificam a primeira versão do navegador que oferece suporte total ao evento.
Event | |||||
---|---|---|---|---|---|
ondrag | 4.0 | 9.0 | 3.5 | 6.0 | 12.0 |
Sintaxe
Em HTML:
<element ondrag="myScript">
Em JavaScript:
object.ondrag = function(){myScript};
Em JavaScript, usando o método addEventListener():
object.addEventListener("drag", myScript);
Observação: o método addEventListener() não é compatível com o Internet Explorer 8 e versões anteriores.
Detalhes técnicos
Bolhas: | sim |
---|---|
Cancelável: | sim |
Tipo de evento: | DragEvent |
Tags HTML suportadas: | Todos os elementos HTML |
Versão DOM: | Eventos de Nível 3 |
Mais exemplos
Exemplo
Uma demonstração de TODOS os eventos de arrastar e soltar possíveis:
<p draggable="true" id="dragtarget">Drag me!</p>
<div class="droptarget">Drop here!</div>
<script>
// Events fired on the drag target
document.addEventListener("dragstart", function(event) {
// The dataTransfer.setData() method sets the data type and the value of the dragged data
event.dataTransfer.setData("Text", event.target.id);
// Output some text when starting to drag the p element
document.getElementById("demo").innerHTML = "Started to drag the p element.";
// Change the opacity of the draggable element
event.target.style.opacity = "0.4";
});
// While dragging the p element, change the color of the output text
document.addEventListener("drag", function(event) {
document.getElementById("demo").style.color = "red";
});
// Output some text when finished dragging the p element and reset the opacity
document.addEventListener("dragend", function(event) {
document.getElementById("demo").innerHTML = "Finished dragging the p element.";
event.target.style.opacity = "1";
});
// Events fired on the drop target
// When the draggable p element enters the droptarget, change the DIVS's border style
document.addEventListener("dragenter", function(event) {
if ( event.target.className == "droptarget" ) {
event.target.style.border = "3px dotted red";
}
});
// By default, data/elements cannot be dropped in other elements. To allow a drop, we must prevent the default handling of the element
document.addEventListener("dragover", function(event) {
event.preventDefault();
});
// When the draggable p element leaves the droptarget, reset the DIVS's border style
document.addEventListener("dragleave", function(event) {
if ( event.target.className == "droptarget" ) {
event.target.style.border = "";
}
});
/* On drop - Prevent the browser default handling of the data (default is open as link on drop)
Reset the color of the output text and DIV's border color
Get the dragged data with the dataTransfer.getData() method
The dragged data is the id of the dragged element ("drag1")
Append the dragged element into the drop element
*/
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>
Páginas relacionadas
Tutorial HTML: Arrastar e Soltar HTML5
Referência HTML: atributo arrastável HTML