2009-02-26 11 views
0

Je travaille avec le contrôle WPF WebBrowser qui est différent de la version WinForms et de nombreuses recommandations de cet excellent site web ne fonctionnent tout simplement pas dans WPF. Comment remplacer la fonction btnSubmit_onclick() javascript sur une page web? Comment remplacer la fonction btnSubmit_onclick() par Javascript?Comment puis-je remplacer la fonction javascript btnSubmit_onclick sur une page Web à l'aide de WPF WebBrowser?

Cette fonction génère une boîte de dialogue de confirmation (comme "Êtes-vous sûr?") Que je souhaite ignorer. Fondamentalement, je veux injecter une nouvelle fonction btnSubmit_onclick() qui remplacera l'existant et je peux omettre le dialogue de confirmation ennuyeux. J'ai accès à MSHTML et à tous les objets de la page, mais j'ai du mal à injecter le script en-tête de la page. Jusqu'à présent, j'ai:

mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser.Document; 
mshtml.IHTMLElementCollection heads = doc.all.tags("head") as mshtml.IHTMLElementCollection; 
mshtml.IHTMLElement head = heads.item(null, 0) as mshtml.IHTMLElement; 
mshtml.IHTMLElement se = doc.createElement("script") as mshtml.IHTMLElement; 
se.innerHTML = "function btnSubmit_onclick() { alert('here we are'); }"; 

Mais maintenant je dois injecter ce nouvel élément de script dans l'objet de la tête avant d'autres les autres scripts, et j'espère que ce sera owerwrite existant en aval fonction btnSubmit_onclick().

J'ai essayé sans succès head.injectAdjusentHTML qui refuse d'injecter n'importe quel script dans l'en-tête même si j'utilise la propriété DEFER.

Comment puis-je le faire?

Répondre

1

Je pense que vous devez l'ajouter à l'extrémité de la tête au lieu de l'injecter avant les autres. Je crois que javascript est un accord de type last-one-wins.

1

Je nai testé, est juste une supposition: Essayez ceci:

// For this code to work: add the Microsoft.mshtml .NET reference 
mshtml.IHTMLDocument2 doc = WebBrowser1.Document as mshtml.IHTMLDocument2; 
doc.parentWindow.execScript("document.body.onsubmit=new function(){ alert('here we are'); };");