Pergunta

Eu tenho trabalhado em um BHO / barra de ferramentas escrito em C # que escuta eventos HTML levantada na página web atual do browser. A solução inclui uma classe reutilizável chamado HtmlPageEventManager cuja finalidade é para se inscrever em uma determinada lista de eventos de HTML para cada nova página que é aberta. A meta é anexar manipuladores assim que o usuário pode começar a interagir com os elementos da página, mesmo antes do carregamento da página está completa. Usando essa classe é simples - basta chamar o construtor:

var evts = new List() {
    HtmlEvent.onclick, HtmlEvent.ondblclick, HtmlEvent.onkeydown,
    HtmlEvent.onselectstart, HtmlEvent.onselectionchange,
    HtmlEvent.onfocus, HtmlEvent.onselect
};
new HtmlPageEventManager( this, evts, this.HtmlEventHandler );

baixar minha solução aqui para testá-lo e me enviar feedback. Sinta-se livre para usá-lo em seus próprios projetos, se você achar que é útil. Embora ele funciona bem, há ocasiões em que ele não consegue anexar os eventos. Eu tive dificuldade em identificar aquelas circunstâncias. Então eu poderia usar alguma ajuda melhorar em cima HtmlPageEventManager.

referências solução Meus SpicIE 's assembléias, mas eles não estão incluídos no download acima , então você vai precisar para obtê-lo a partir o site SpicIE . Aliás, este é provavelmente um bom momento para perguntar: como popular é SpicIE? Melhor ferramenta para uso?

Foi útil?

Solução

Yeah! Eu superei a questão "Atualizar", assinando o evento DownloadComplete do BHO, onde eu novamente chamar o meu "RegisterEventHandlers" método auxiliar que atribui os manipuladores de eventos HTML. O jeffamaphone código ligado ao foi útil. Eu incorporei a sua idéia de um "normalPageLoad" variável de membro para RegisterEventHandlers condicionalmente chamada. Eu também olhou para o acompanha fórum pós . Eu não consigo entender a ênfase no evento Loaded da janela pai, no entanto. Eu tenho o meu código de trabalho, mesmo sem fazer essa parte. Enfim, acho que HtmlPageEventManager é totalmente funcional agora - bate na madeira. Por favor me dê um grito se você encontrar um caso em que ele ainda não está fazendo seu trabalho.

Outras dicas

Você vai descobrir que não há 100% solução para fazer isso por IE durante carregamento da página. Não é culpa sua: modelo de evento do IE é uma massa espaguete gigante de código assíncrono que torna muito difícil de acertar. Se você tem uma solução que é de 95%, eu digo ser feliz e seguir em frente.

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