1. Flujo de eventos
Las transmisiones de eventos describen el orden en que se reciben los eventos de la página. Pero IE propone corrientes de burbujas, mientras que Netscape Communicator propone corrientes de captura.
Transmisión de eventos de JavaScript
2. Burbuja de eventos
El evento comienza a ser recibido por el elemento más específico (el nodo con la jerarquía de anidación más profunda), y luego se propaga hacia arriba paso a paso a nodos (documento) menos específicos. como sigue:
La copia del código es la siguiente:
<html>
<Evista>
<title> Event Bubbling </title>
</ablo>
<Body>
<div id = "myDiv"> Haga clic en mí </div>
</body>
</html>
window.onload = function () {
var obj = document.getElementById ("prueba");
obj.onclick = functer () {
alerta (this.tagname);
};
document.body.onclick = function () {
alerta (this.tagname);
};
document.documentelement.Onclick = function () {
alerta (this.tagname);
};
document.OnClick = function () {
alerta ("documento");
};
Window.OnClick = function () {
alerta ("ventana");
}
};
Orden de propagación de eventos: div-> cuerpo-> html-> documento
Aviso:
Todos los navegadores modernos admiten eventos de burbujas, pero hay algunas diferencias en la implementación. Las burbujas de eventos en IE5.5 y las versiones anteriores saltarán directamente del cuerpo al documento (no se ejecuta HTML). Firefox, Chrome y Safari Bubble Events hasta el objeto de la ventana.
3. Detener burbujas de eventos y cancelar eventos predeterminados
a. Obtener el objeto del evento
La copia del código es la siguiente:
función getEvent (evento) {
// window.event es decir
// Evento no II
Evento de regreso || Window.event;
}
Función B: detener burbujas de eventos
La copia del código es la siguiente:
función stopbubble (e) {
// Si se proporciona un objeto de evento, este es un navegador no II
if (e && e.stoppropagation) {
// Por lo tanto, admite el método stopPropagation () de W3C
E.stoppropagation ();
} demás {
// de lo contrario, debemos usar IE para cancelar la burbuja del evento
window.event.cancelBubble = true;
}
}
do. Bloquear el comportamiento predeterminado del navegador
La copia del código es la siguiente:
function stopDefault (e) {
// Acción de navegador predeterminada de bloque (W3C)
if (e && e.preventDefault) {
E.PreventDefault ();
} demás {
// Cómo bloquear la acción predeterminada de la función en IE
Window.event.returnValue = false;
}
devolver falso;
}