Hallo zusammen,
hat jemand schon mal versucht die ScrollPosition vom WebBrowser rauszubekommen?
Ich versuch es jetzt schon einige Zeit, krieg ich sie auch beim ersten mal zurück, beim nächsten mal dann aber nur noch eine Fehlermeldung .. > Fehlermeldung:
"Ausnahme von HRESULT: 0x800A01B6 / NotSupportedException"
Aktuell bekomme ich sie so :
If WebBrowser.Document IsNot Nothing Then
Dim htmlDoc As HTMLDocument = WebBrowser.Document
If htmlDoc IsNot Nothing Then
With htmlDoc.getElementsByTagName("HTML")(0)
MsgBox(.ScrollLeft)
MsgBox(.ScrollTop)
End With
End If
End If
Grüße
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi _Cashisclay,
wenn man mal nach dem ErrorCode googelt, dann kommt man schnell auf den Hinweis, daß man den ReadyState des WebBrowsers abfangen muß. Hier ein paar Links, vielleicht hilft es weiter:
https://social.msdn.microsoft.com/Forums/ie/en-US/82b99cd5-869b-4b57-880f-478df7661778/documentbodyinnertext-0x800a01b6-error?forum=iewebdevelopment
https://stackoverflow.com/questions/10071048/internet-explorer-automation-busy-v-s-readystate-property/10071209#10071209
Weeks of programming can save you hours of planning
Der Readystate steht im ersten Fall (wo keine Fehlermeldung kommt) auf complete
und beim zweiten Mal ebenso auf Complete wo allerdings die Fehlermeldung erscheint.
Per Ferndiagnose läßt sich halt schwer sagen, was die Unterschiede zwischen dem ersten und dem zweiten Aufruf sein könnten.
Die Frage ist halt, ob es sich lohnt, da so viel Zeit reinzustecken. Als Alternative könntest du evtl. ein anderes WebBrowser-Control verwenden.
Weeks of programming can save you hours of planning
Erster Treffer bei Google: C# WPF WebBrowser alternative
Weeks of programming can save you hours of planning
Konnte das denn jetzt mal jemand nachstellen?
Dim htmlDoc As HtmlDocument = wb.Document
Dim scrollTop As Integer = htmlDoc.GetElementsByTagName("HTML")(0).ScrollTop
Bei mir klappt es wie gesagt nur beim ersten mal, einen alternativen WebBroswer werde ich mir mal ansehen, wüsste trotzdem gern wo der Fehler liegt, falls jemand eine Idee hat.
Also in meinem Testprojekt (C#) gibt es damit keine Probleme.
Was mich verwundert: du nutzt HtmlDocument
, obwohl die Klasse im mshtml
-Namespace HTMLDocument
heißt.
public TestView()
{
InitializeComponent();
_webBrowser.Navigate("https://www.mycsharp.de/wbb2/thread.php?threadid=120311");
}
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
var htmlDocument = _webBrowser.Document as HTMLDocument;
_textBoxTop.Text = htmlDocument.getElementsByTagName("HTML").item(0).ScrollTop.ToString();
_textBoxLeft.Text = htmlDocument.getElementsByTagName("HTML").item(0).ScrollLeft.ToString();
}
Ist nur dirty im CodeBehind runter getippt. Gibt nach jedem Klick auf den Button aber Werte aus.
Heißt bei mir auch ganz normal HTMLDocument
'Dim doc As mshtml.HTMLDocument = WebBrowser.Document
'If Not doc.getElementsByTagName("html").length = 0 Then
' If doc.readyState = "complete" Then
' MsgBox(doc.getElementsByTagName("html")(0).ScrollLeft.ToString)
' MsgBox(doc.getElementsByTagName("html")(0).ScrollTop.ToString)
' End If
'End If
Kann es am Inhalt des WebBrowser liegen? Oder weil der Inhalt über ein Binding dargestellt wird?
Hm..
Damit geht es .. es scheint also mit der Quelle meiner Daten zusammenzuhängen
Bzw. macht es einen Unterschied für das Auslesen der Scrollwerte ob ich es mit Navigate oder z.B. NavigateToString anzeige?
Wegen der Zeile :
<meta http-equiv="X-UA-Compatible" content="IE=11"></meta>
Kommt der Fehler ständig, wenn ich das ganze auf IE=8 stelle funktioniert es.. allerdings sieht es dann nicht mehr so aus wie gewünscht .. es ist zum verzweifeln.
Die Engine des Browser Controls ist uralt (IE7).
Sie funktioniert auch an vielen Stellen einfach mit modernen Webseiten nicht mehr.
Daher ist sie auch einfach nicht mehr empfohlen.
Sehr ähnliches Thema hier im Forum bzgl. dieses Engine Problems:
Im Webbrowser control soll Script debugging deaktiviert werden
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hat denn jemand schon mal "erfolgreich" eine alternativen WebBrowser benutzt? CefSharp krieg ich bei mir unter VS10 nicht eingebunden..
Alternativen haben bis jetzt auch noch nicht geklappt.
Grüße
Edit: Ich geb es auf, das kostet mich einfach zu viel Zeit und zu viele nerven, geht halt nicht.