2010-04-13 3 views
1

J'ai un contrôle WebBrowser et j'essaie de définir les attributs onclick et href sur tous les liens.Définir les événements JavaScript dans le contrôle WebBrowser

foreach (HtmlElement link in webBrowser1.Document.Links) 
{ 
     link.SetAttribute("href", "http://www.google.com"); 
     link.SetAttribute("onclick", "return false;"); 
} 

Cela fonctionne bien. Quand j'ai sorti le code source de html externe, je vois que les attributs existaient. Mais le code JavaScript ne fonctionne pas. Pourquoi et comment puis-je forcer le contrôle WebBrowser à exécuter du code javascript?

Répondre

2

onclick est une propriété de type IDispatch. Vous pouvez assigner une fonction sans paramètre à la propriété ou ajouter un attribut au HTML et laisser l'analyseur le faire pour vous mais vous ne pouvez pas lui assigner de chaîne via DOM.

Vous pouvez passer un objet qui implémente IDispatch et la méthode par défaut (dispid = 0) à la propriété ou utiliser IHTMLElement2 :: attachEvent pour attacher un gestionnaire d'événements. Si vous utilisez les bibliothèques de classes de Microsoft, vous pouvez utiliser les wrappers de Microsoft tels que HtmlElement.AttachEventHandler dans Windows Forms et HtmlElement.Attachevent dans Silverlight.

Questions connexes