2009-02-26 4 views
0

Ich arbeite mit dem WPF WebBrowser Steuerelement, die von der WinForms-Version unterscheidet und viele Empfehlungen von dieser ausgezeichneten Website funktionieren einfach nicht in WPF.Wie kann ich die JavaScript-Funktion btnSubmit_onclick auf einer Webseite mit dem WPF WebBrowser überschreiben?

Wie kann ich überschreiben die btnSubmit_onclick() Javascript-Funktion auf einer Webseite?

Diese Funktion erzeugt ein Bestätigungsdialog (wie „Sind Sie sicher?“), Die ich umgehen möchten. Grundsätzlich möchte ich eine neue Funktion btnSubmit_onclick() einfügen, die die vorhandene ersetzen wird und ich kann ärgerlichen Bestätigungsdialog weglassen. Ich habe Zugriff auf MSHTML und alle Seitenobjekte, aber ich habe Mühe, Skript in den Kopf der Seite zu injizieren. Bisher habe ich bekam:

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'); }"; 

Aber jetzt brauche ich dieses neue Script-Element, bevor andere die anderen Skripte in Kopfobjekt zu injizieren, und ich hoffe, dass es owerwrite Downstream btnSubmit_onclick() Funktion vorhanden ist.

ich erfolglos versucht head.injectAdjusentHTML, die jedes Skript in den Header zu injizieren weigert sich sogar, verwende ich Eigenschaft aufzuschieben.

Wie kann ich es tun?

Antwort

1

Ich glaube, Sie es bis zum Ende des Kopfes hinzufügen müssen, anstatt sie zu injizieren, bevor die anderen. Ich glaube, dass Javascript ein Last-One-Wins-Deal ist.

1

ich diese haben getestet, ist nur eine Vermutung: Try this:

// 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'); };"); 
Verwandte Themen