Erste Frage so sei sanft. Ich habe einige Projekte mit der Webbrowser-Komponente versucht. Ich wollte einfach den Suchbegriff in Google setzen. Ich habe IE9 auf dieser Maschine installiert. Ich führe den folgenden Code:Webbrowser läuft im Kompatibilitätsmodus
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
Dim dumstr As String = ""
Dim jqCheck As Boolean = False
Dim dum As Object
WebBrowser1.Navigate("http://www.google.com/ncr")
Do While WebBrowser1.IsBusy = True Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
Loop
dum = {"javascript:var element1 = document.createElement(""script"");element1.src = ""https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"";document.getElementsByTagName(""head"")[0].appendChild(element1);"}
WebBrowser1.Document.InvokeScript("eval", dum)
Do While Not jqCheck
Application.DoEvents()
jqCheck = WebBrowser1.Document.InvokeScript("eval", {"javascript:jqCheck=!(typeof $==='undefined');jqCheck"})
Loop
dumstr = WebBrowser1.Document.InvokeScript("eval", {"javascript:document.documentElement.innerHTML"})
TextBox1.Text = dumstr
WebBrowser1.Document.InvokeScript("eval", {"javascript:$(""#lst-ib"").attr('value','I was here')"})
Application.DoEvents()
dumstr = WebBrowser1.Document.Forms(0).Document.GetElementById("q").GetAttribute("value")
System.Threading.Thread.Sleep(5000)
WebBrowser1.Document.GetElementById("q").SetAttribute("value", "I was here first")
End Sub
Der HTML-Code von Webbrowser wird in das Textfeld eingefügt.
<meta content="IE=edge" http-equiv="X-UA-Compatible">
Gibt an, dass der beste verfügbare IE verwendet werden sollte? Der Webbrowser scheint im IE7-Kompatibilitätsmodus ausgeführt zu werden. Auch getElementByID ("q") funktioniert, aber von der html
id="lst-ib" class="gsfi" title="Search" name="q".
Also ich denke, ich habe 2 Fragen. Warum scheint der Webbrowser im Kompatibilitätsmodus zu laufen und warum scheint GetElementById an einem Namen zu arbeiten?
UPDATE: Ich fügte hinzu:
dumstr = WebBrowser1.Document.InvokeScript("eval", {"javascript:navigator.appVersion"})
MsgBox(dumstr)
die Ausgabe angegeben IE7 bei der Arbeit war.
Ich habe auch zu HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ Featurecontrol \ FEATURE_BROWSER_EMULATION die Namen meines .exe mit einem 9999-Wert hinzugefügt, aber wir laufen noch im IE7-Modus