Question

Je travaille sur une barre d'outils BHO / écrite en C # qui écoute les événements HTML générés sur la page Web actuelle du navigateur. La solution inclut une classe réutilisable appelée HtmlPageEventManager, dont le but est de s'abonner à une liste donnée d'événements HTML pour chaque nouvelle page Web ouverte. Un objectif consiste à attacher des gestionnaires dès que l'utilisateur peut commencer à interagir avec les éléments de page, avant même que le chargement de la page ne soit terminé. Utiliser cette classe est simple - appelez simplement le constructeur:

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

Veuillez télécharger ma solution ici l'essayer et m'envoyer des commentaires. N'hésitez pas à l'utiliser dans vos propres projets si vous le trouvez utile. Bien que cela fonctionne bien, il arrive parfois que les événements ne soient pas attachés. J'ai eu du mal à identifier ces circonstances. Je pourrais donc avoir besoin d’aide pour améliorer HtmlPageEventManager.

Ma solution fait référence aux assemblages de SpicIE , mais ils ne sont pas inclus dans le téléchargement ci-dessus. , vous devrez donc vous en procurer auprès du site Web de SpicIE . Au fait, c'est probablement le bon moment pour demander: quelle est la popularité de SpicIE? Un meilleur outil à utiliser?

Était-ce utile?

La solution

Oui! J'ai vaincu le message "Actualiser". émettez en vous abonnant à l'événement DownloadBomplete du BHO, où j'appelle à nouveau mon " RegisterEventHandlers " méthode d'assistance qui attache les gestionnaires d'événements HTML. Le code que jeffamaphone associé était utile. J'ai intégré son idée de "normalPageLoad". membre variable à appeler conditionnellement RegisterEventHandlers. J'ai également consulté l'accompagnement message du forum . Je ne comprends pas l'accent mis sur l'événement Loaded de la fenêtre parente. J'ai fait fonctionner mon code sans même faire cette partie. Quoi qu'il en soit, je pense que HtmlPageEventManager est entièrement fonctionnel maintenant: touchez du bois. S'il vous plaît donnez-moi un cri si vous trouvez un cas dans lequel il ne fait toujours pas son travail.

Autres conseils

Vous allez trouver qu'il n'y a pas de solution à 100% pour le faire pour IE pendant le chargement de la page. Ce n'est pas votre faute: le modèle d'événement d'IE est une masse spaghetti géante de code asynchrone, ce qui rend très difficile toute correction. Si vous avez une solution à 95%, je vous dis d'être heureux et d'aller de l'avant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top