Estou tentando entender o funcionamento geral e os princípios do envio de eventos em (sub) sistemas orientados a eventos.
Embora eu o tenha usado em várias ocasiões, por exemplo, Javascript, Flash (Actionscript 2 e 3) e até tenha criado um sistema simples de envio de eventos em PHP para mim, ao mesmo tempo, eu nunca entendi realmente a ocorrência de eventos e / ou propagação tão bem.
Primeira pergunta:
borbulhar evento é sinônimo de propagação de evento?
Segunda pergunta:
Estou correto em meu entendimento de que quando um evento "borbulha", isso significa que ele é "movido" pela hierarquia de objetos?
Terceira e mais importante pergunta:
se meu entendimento na pergunta 2 está correto; como esse "subir" na hierarquia de objetos geralmente implementado?
Isso geralmente significa que o objeto pai "reenvia" o mesmo evento para seu pai (até atingir o objeto raiz)? E se; todos esses objetos na hierarquia precisam ouvir seus filhos para esses eventos, ou estou perdendo algum princípio vital no meu entendimento sobre a bolha de eventos, onde não há necessidade de permitir que o objeto pai os registre como ouvintes de eventos de objetos filhos?
Se você pudesse ilustrar esses princípios básicos por meio de algum pseudo-código simples, ficaria muito grato.
fonte
Respostas:
Não. Bubbling é uma forma de propagação de evento, mas não pode ser usado como sinônimo. Propagação é um termo geral para a transmissão de um evento. Bubbling é uma estratégia específica de propagação de eventos.
Sim. Bubbling significa que ele sobe na hierarquia, em oposição ao encapsulamento , o que significa que vai do elemento superior para baixo ou roteamento , o que significa que o próximo objeto a receber o evento pode ser o que você escolher.
Bem fácil. Na sua hierarquia visual, os controles têm uma referência ao pai ou ao visual de nível superior ou podem obtê-lo em algum lugar. Portanto, quando capturam um evento, eles apenas notificam seu pai, que notifica seu pai, etc.
O pseudo-código é assim para qualquer controle de interface do usuário:
Como blueberryfields disse que não precisa ser o pai direto que recebe o evento a seguir. Você pode implementar assim também:
fonte
Primeira resposta:
Borbulhamento de eventos é um algoritmo específico que orienta a propagação de eventos.
Segunda resposta:
Não, a bolha não está necessariamente relacionada a nenhuma hierarquia. Como os objetos são representados internamente ou em outro lugar não importa realmente que o algoritmo funcione corretamente. Idealmente, quando um evento borbulha, ele se expande para fora do elemento visível mais interno na tela, até o elemento visível mais externo na tela.
Terceira resposta:
Os detalhes da implementação podem variar muito, dependendo de como as partes internas de cada (navegador) são implementadas. O
bubbling
algoritmo depende dos recursos visuais na tela. Se um elemento encapsulante for mais alto na hierarquia de herança do que um elemento interno, a interferência pode ser implementada usando mecanismos de herança padrão no idioma, por exemplo. Mas isso não é necessariamente verdade - você pode ter um mecanismo especializado que possa interpretar as estruturas internas e sua visibilidade na tela e propagar eventos de acordo com o algoritmo, ignorando a organização interna.fonte