Come funziona in generale il bubbling degli eventi ed è sinonimo di propagazione degli eventi?

11

Sto cercando di comprendere i meccanismi e i principi generali dell'erogazione degli eventi nei sistemi (sotto) event-driven.

Anche se l'ho usato in diverse occasioni, ad esempio Javascript, Flash (Actionscript 2 e 3) e ho persino creato un semplice sistema di invio di eventi in PHP per me stesso, non ho mai veramente capito l'evento che bolle e / o la propagazione che bene.

Prima domanda:
È sinonimo di bubbling di eventi alla propagazione di eventi?

Seconda domanda:
Ho ragione nel capire che quando un evento "bolle" significa che viene "spostato" verso la gerarchia degli oggetti?

Terza e più importante domanda:
Se la mia comprensione nella domanda 2 è corretta; in che modo questo "sposta" la gerarchia degli oggetti generalmente implementati?
Generalmente significa che l'oggetto genitore "ridisponde" lo stesso evento a suo genitore (finché non raggiunge l'oggetto radice)? E se così fosse; tutti questi oggetti nella gerarchia hanno bisogno di ascoltare i loro figli per questi eventi, o mi manca qualcosa di vitale nel mio comprendere il bubbling degli eventi, dove non c'è bisogno di lasciare che l'oggetto genitore li registri come ascoltatori di eventi oggetto figlio? / p>

Se potresti illustrare questi principi di base per mezzo di un semplice pseudo-codice, sarei più che grato.

    
posta Decent Dabbler 26.09.2011 - 22:45
fonte

2 risposte

7

First question: Is event bubbling synonym to event propagation?

No. Bubbling è una forma di propagazione degli eventi, ma non può essere utilizzato come sinonimo. La propagazione è un termine generale per passare un evento in giro. Bubbling è una strategia specifica di propagazione degli eventi.

Second question: Am I correct in my understanding that when an event "bubbles", this means that it gets "moved" up the hierarchy of objects?

Sì. Bubbling significa che sale la gerarchia, invece di tunneling , il che significa che va dall'elemento in alto o routing , il che significa che il prossimo oggetto per ricevere l'evento può essere qualsiasi cosa tu scelga.

Third and most important question: If my understanding in question 2 is correct; how is this "moving" up the hierarchy of objects generally implemented?

Abbastanza facile. Nella tua gerarchia visiva i controlli hanno un riferimento al loro genitore / al loro livello superiore visivo o possono ottenerlo da qualche parte. Quindi, quando catturano un evento, ne informano solo il genitore, che ne informa il genitore ecc.

Lo pseudo codice è così per qualsiasi controllo dell'interfaccia utente:

OnEvent(SomeEvent event)
{
   CallHandlersForEvent(event);
   if(HasParent && event.ContinueBubbling == true)
   {
       Parent.OnEvent(event);
   }
}

Come Blueberryfields ha detto che non deve essere il genitore diretto che riceve l'evento successivo. Potresti implementare anche in questo modo:

OnEvent(SomeEvent event)
{
    CallHandlersForEvent(event);
    NextControl = VisualTree.GetVisualParent(this);
    if(NextControl != null && event.ContinueBubbling == true)
    {
       NextControl.OnEvent(event);
    }
}
    
risposta data 27.09.2011 - 00:05
fonte
1

Prima risposta:

Il bubbling degli eventi è uno specifico algoritmo che guida la propagazione degli eventi.

Seconda risposta:

No, il bubbling non è necessariamente correlato a nessuna gerarchia. Il modo in cui gli oggetti sono rappresentati internamente o altrove non ha alcuna importanza perché l'algoritmo funzioni correttamente. Idealmente, quando un evento bolle, si espande verso l'esterno dall'elemento più interno visibile sullo schermo, fino all'elemento visibile più esterno sullo schermo.

Terza risposta:

I dettagli dell'implementazione possono variare molto a seconda di come vengono implementati gli interni di ciascun (browser). L'algoritmo bubbling dipende dalle immagini sullo schermo. Se un elemento incapsulante è più alto nella gerarchia dell'ereditarietà di un elemento interno, il bubbling potrebbe essere implementato utilizzando, ad esempio, meccanismi di ereditarietà standard nella lingua. Ma questo non è necessariamente vero: potresti avere un meccanismo specializzato che può interpretare sia le strutture interne che la loro visibilità sullo schermo, e propagare gli eventi secondo l'algoritmo ignorando l'organizzazione interna.

    
risposta data 26.09.2011 - 23:45
fonte

Leggi altre domande sui tag