J'ai travaillé sur une BHO/barre d'outils é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 l'objectif 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 des éléments de page, avant même que le chargement de la page ne soit terminé. L'utilisation de cette classe est simple - il suffit d'appeler le constructeur:Écouter des événements HTML de BHO
var evts = new List() { HtmlEvent.onclick, HtmlEvent.ondblclick, HtmlEvent.onkeydown, HtmlEvent.onselectstart, HtmlEvent.onselectionchange, HtmlEvent.onfocus, HtmlEvent.onselect }; new HtmlPageEventManager(this, evts, this.HtmlEventHandler);
S'il vous plaît download my solution here pour l'essayer et envoyez-moi des commentaires. N'hésitez pas à l'utiliser dans vos propres projets si vous le trouvez utile. Bien que cela fonctionne bien, il y a des occasions où il n'arrive pas à attacher les événements. J'ai eu de la difficulté à identifier ces circonstances. Donc je pourrais utiliser de l'aide pour améliorer HtmlPageEventManager.
Ma solution fait référence aux assemblages SpicIE mais ils ne sont pas inclus dans le téléchargement ci-dessus. Vous devrez donc l'obtenir auprès de the SpicIE website. Btw, c'est probablement le bon moment pour demander: quelle est la popularité de SpicIE? Un meilleur outil à utiliser?
J'ai trouvé un cas reproductible où HtmlPageEventManager ne parvient pas à attacher les événements. Lorsque vous ouvrez une page Web, cela fonctionne correctement dans 95% des cas. Toutefois, lorsque vous "actualisez" cette page, les enregistrements d'événements sont perdus. Marcher à travers le débogueur, tout a l'air comme prévu. Une recherche Google (http://www.google.com/search?q=IWebBrowser2+detect+refresh) révèle qu'il s'agit d'un problème courant. Il ne semble pas que j'aurai le temps de poursuivre seul. Alors s'il vous plaît poster ici et/ou contactez-moi si vous êtes intéressé à aider à améliorer HtmlPageEventManager de cette façon. – HappyNomad