mecanismo de eventos js em detalhes

Saiba mecanismo de eventos deve primeiro entender os eventos e fluxo de eventos.

1. manipulador de eventos

Os manipuladores de eventos são divididos em três categorias:

  • manipuladores de eventos HTML
  • manipulador de eventos de nível DOM0
  • manipulador de eventos de nível DOM2

1. manipuladores de eventos HTML

< Botão onclick = "alert (Olá mundo!)" > </ Olá >

 

 

Características são:

JS acoplado a HTML e altura, quando a necessidade de modificar o nome da função, necessidade de modificar dois lugares

 

manipulador de eventos 2. nível DOM0

manipulador de eventos nível DOM0 por meio de um nó DOM é adicionado em [evento] evento por JS.

var btn = document.getElementById ( "# btn" ); 
btn.onclick = função () { 
    alert (Olá mundo ! ) 
}

 

Características são:

Cada DOM pode adicionar apenas um evento;

 

manipulador de eventos 3. nível DOM2

Suas características:

Você pode adicionar vários nós ao tratamento de eventos DOM

IE10- método correspondente é: a attachEvent / detachEvent , é utilizado como se segue:

função handleEvent (Evento) {
    // TODO 
} 
dom.attachEvent (eventName, handleEvent)   // attachEvent só pode ser accionado em meta fase e fase borbulhar 
dom.detachEvent (eventName, handleEvent)

 

 

 

parâmetros de aquisição pode ser obtida directamente na função ouvinte no caso do seu objecto, as suas propriedades são as seguintes:

1. Tipo - obter o tipo de evento 
2. srcElement - get público 
3. cancelBubble = true para impedir que o evento borbulhando 
4. returnValue = false para evitar o comportamento padrão do evento

 

IE11 navegadores + e outros métodos correspondentes é o addEventListener / o removeEventListener . Seu uso é a seguinte:

função do handleEvent (Evento) {
   // o TODO 
} 
dom.addEventListener (eventName, o handleEvent, a falsa ); //   i {useCapture: falso}, pode desencadear borbulhando fase de fase / alvo; padrão 
dom.removeEventListener (eventName, handleEvent, falso );

 

As propriedades evento de objectos correspondentes são:

1. Tipo - obter o tipo de evento 
2. alvo - obter eventos alvo 
3. stopPropagation () - parar a propagação do evento 
4. preventDefault () - evitar o comportamento padrão do evento

 

 

2. fluxo de eventos

fluxo de eventos é a seqüência de eventos na página de aceitar que a sequência de eventos se espalhar. propagação do evento consiste de três fases:

  • Capturando fase - a partir do exterior -> DOM alvo
  • estágio alvo
  • fase borbulhante - alvo dom-> mais externa

Quando o borbulhamento e exist captura, a fim eventing: Captura -> Target -> borbulhante

exemplo:

<! - 单击filho -> 
<! DOCTYPE html > 
< html lang = "en" > 
< corpo > 
  < div id = "pai" estilo = "width: 400px; height: 200px; background-color: bisque" > 
    < div id = "filho" estilo = "width : 200px; height: 100px; background-color: marrom" > </ div > 
  </ div > 
  < roteiro > 
    document.body.addEventListener ( ' clique ' , ' corpo-Bubble ' ) 
    }, para false );
     // Note que o pai não pode ser usado diretamente como id, representantes WINDOW.PARENT 
    father.addEventListener ( ' Click ' , função (event) { 
      o console.log ( ' pai- bolha ' ); 
    }, para false ); 
    document.body.addEventListener ( ' Click ' função (event) { 
      o console.log ( ' corpo-Capture ' ) 
    }, para true );
    father.addEventListener ( ' clique' Função (event) { 
      console.log ( ' pai-capture ' ); 
    }, Verdadeiro ); 
    son.addEventListener ( ' clique ' , função (event) { 
      console.log ( ' filho ' ); 
    }, falsa ); 
  </ Roteiro > </ corpo > </ html >

 

 

resultados operacionais

corpo- captura de 
pai - captura de 
filho 
pai - bolha 
corpo -bubble

 

3. delegação de eventos

delegados de evento, também chamado de evento corretor.

1. O princípio do delegado do evento

Geralmente refere-se a borbulhar o uso evento, ou um grupo de um manipulador delegado evento DOM para o elemento pai ou elemento mais exterior.

2. A importância do delegado do evento

Pode especificar apenas um manipulador de eventos, você pode gerenciar um número de diferentes tipos de manipuladores de eventos.

 

Se você precisa adicionar o evento à lista de itens, quando um número excessivo de itens da lista, haverá situação de operação frequente do DOM; e função são tipos de referência, memória heap necessário para loja, pegar um monte de espaço. Encomendado pelo evento, o evento pode ser ligado ao elemento pai ul, por isso, só precisa fazer isso uma vez DOM, sem causar redraws frequentes. Ele não vai ocupar muito espaço.

exemplo:

<! - conseguido através da ligação directa de um delegado do evento e também sobre o li o mesmo efeito por propriedades específicas do evento -> <! DOCTYPE HTML > 
< HTML lang = "EN" > 
< corpo > 
  < ul o acima indicado do ID = 'Pai' > 
    < Li ID = "A" > A </ Li > 
    < Li ID = "B" > B </ Li > 
    < Li ID = "C" > C </ Li > 
    < Li ID = "d" > D </Li > 
  </ UL > 
  < script > 
  father.addEventListener ( ' Click ' , função (E) { 
    const Evento = E || o window.event; 
    alvo const = event.target || event.srcElement;
     // A determinação atributo de evento nó DOM atualmente está localizada, diferente programa de processamento de nó 
    interruptor (target.id) {
       caso  " a " : 
        o console.log ( ' a ' );
         INTERVALO ;
       caso  " B" : 
        Console.log ( ' b ' );
         ruptura ;
       caso  " c " : 
        console.log ( " C " );
         ruptura ;
       caso  " d " : 
        console.log ( " d " );
         ruptura ;
       default : 
        console.log ( ' default ' ); 
    } 
  }) 
  </ roteiro > 
</ Corpo >
</ Html >

 

Acho que você gosta

Origin www.cnblogs.com/lyraLee/p/12484250.html
Recomendado
Clasificación