Pregunta

He estado trabajando en una barra de herramientas / BHO escrita en C # que escucha los eventos HTML generados en la página web actual del navegador. La solución incluye una clase reutilizable llamada HtmlPageEventManager cuyo propósito es suscribirse a una lista dada de eventos HTML para cada nueva página web que se abra. Un objetivo es adjuntar controladores tan pronto como el usuario pueda comenzar a interactuar con los elementos de la página, incluso antes de que se complete la carga de la página. Usar esta clase es simple: simplemente llame al constructor:

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

Por favor, descargue mi solución aquí para probarlo y enviarme comentarios. Siéntase libre de usarlo en sus propios proyectos si lo encuentra útil. Aunque funciona bien, hay ocasiones en que no se pueden adjuntar los eventos. He tenido dificultades para identificar esas circunstancias. Entonces podría usar algo de ayuda para mejorar HtmlPageEventManager.

Mi solución hace referencia a los ensamblados de SpicIE pero no están incluidos en la descarga anterior , por lo que deberá obtenerlo de el sitio web de SpicIE . Por cierto, este es probablemente un buen momento para preguntar: ¿qué tan popular es SpicIE? ¿Alguna herramienta mejor para usar?

¿Fue útil?

Solución

¡Sí! Superé el " Actualizar " problema suscribiéndose al evento DownloadComplete de BHO, donde nuevamente llamo a mi " RegisterEventHandlers " Método auxiliar que adjunta los controladores de eventos HTML. El código vinculado a jeffamaphone fue útil. Incorporé su idea de un " normalPageLoad " variable miembro para llamar condicionalmente RegisterEventHandlers. También miré el adjunto publicación en el foro . Sin embargo, no puedo entender el énfasis en el evento Cargado de la ventana principal. Obtuve mi código funcionando sin siquiera hacer esa parte. De todos modos, creo que HtmlPageEventManager ahora es completamente funcional: toca madera. Dame un grito si encuentras un caso en el que todavía no está haciendo su trabajo.

Otros consejos

Encontrará que no hay una solución 100% para hacer esto para IE durante la carga de la página. No es tu culpa: el modelo de evento de IE es una masa de espagueti gigante de código asincrónico que hace que sea muy difícil acertar. Si tiene una solución del 95%, le digo que sea feliz y siga adelante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top