Der WebClient führt Javascript aus

7

Ich habe einen. Aspx-Seite, die einige JavaScript-Funktionen hat, die das Paging steuern.

Ich kann diese JavaScript-Funktion über den Webbrowser mit der folgenden Methode in WebBrowser1_DocumentCompleted

ausführen %Vor%

Der Webbrowser ist sehr langsam und ich bevorzuge System.Net.WebClient.DownloadString .

Gibt es eine Möglichkeit, dieses Skript mit den Methoden System.Net.WebClient auszuführen, die schneller oder auf andere Weise sind?

    
Andre Reese 20.03.2011, 23:19
quelle

1 Antwort

19

Nun, nein. WebClient ist ein HTTP Client, kein Webbrowser.

Ein HTTP-Client folgt der HTTP-Spezifikation; Die Tatsache, dass Ihre HTTP-Anfragen zu HTML führen, ist für den Client irrelevant.

Ein Webbrowser hingegen kann nicht nur ein HTTP-Client sein, sondern auch HTML-Antworten parsen (und JavaScript usw. ausführen).

Es scheint, dass das, wonach Sie suchen, ein "kopfloser Browser" genannt wird, der das Laden von HTML und das Ausführen von JavaScript auf dem DOM genau so unterstützt, wie Sie es brauchen. Kopflose Browser sind im Allgemeinen auch ziemlich schnell im Vergleich zu normalen Browsern, da sie kein Rendering benötigen.

Es gibt mehrere kopflose Browser. HtmlUnit (das kann konvertiert um auf .NET zu laufen) scheint eine gute Wahl zu sein, ebenso wie envjs (es ist in JavaScript geschrieben, welches in .NET eingebettet werden kann ). Leider habe ich keine Erfahrung mit beiden, aber sie sehen beide super-cool aus, besonders envjs. Update: Eine schöne, aktuellere Liste kopfloser Browser wurde auf GitHub veröffentlicht .

Es gibt auch andere Alternativen für die WebBrowser -Kontrolle, die es sein können oder auch nicht schneller in Ihrem Fall, wenn Sie mit einem Steuerelement bleiben wollen.

    
Cameron 21.03.2011 00:01
quelle