Pergunta

Eu estou olhando para criar eventos em Javascript, utilizando a mesma metodologia JQuery - alguém sabe como JQuery não é?

Meu raciocínio é que, utilizando matérias Javascript como este:

var myEvent = new CustomEvent("userLogin", eventProperties);

...na verdade, não funciona no Android nativo do navegador, que não suporta o Nível 3 de DOM, como o Chrome e outros navegadores.

No Entanto, JQuery não trabalhar no Android ações do navegador, e simplesmente usa:

$.event.trigger('MyEvent');

A minha pergunta é, qual é o código por trás desta?Eu tentei encontrá-lo por meio do fórum código-fonte, mas não é possível colocar minha cabeça em torno dela!

Foi útil?

Solução

O fundamental aqui é este:Quando você conectar um manipulador de eventos com jQuery, jQuery não adicionar diretamente o manipulador para o elemento DOM.Em vez disso, jQuery conecta um manipulador do seu próprio no elemento DOM (se já não tiver um no-lo).Quando o evento ocorre, jQuery procura na lista de jQuery gerenciadores registrados para o evento e atira-los em ordem.(Há várias razões para isso;inicialmente, foi principalmente em torno do IE vazamentos de memória e o fato de que o IE demitido processadores em um único pedido, e todos os outros em uma ordem diferente;jQuery assumiu e assegurada a ordem.)

(Você pode ser capaz de ver para onde estou indo com isso...)

Portanto, quando você usa trigger, jQuery envia o sintético evento para o elemento DOM, mas não confiar no sintético do evento para o trabalho;ele chama os manipuladores você já registrado através de jQuery diretamente.Na verdade, ele define um sinalizador para que ele sabe que ele é feito e que, por isso, se o navegador não enviar o evento para jQuery manipulador para ele, jQuery, sabe-se ignorá-lo (pois ele já fez seu trabalho).

Você pode ver isso em toda a sua glória, começando com a linha de 4,464 o atual descompactado do arquivo jQuery.

Então, basicamente, jQuery construir o seu próprio pub/sub-sistema, e apenas utiliza o navegador de sistema de eventos como uma entrada para ele.Para eventos personalizados não costumo falar para o navegador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top