Hallo,
hier ein Beispiel, um auch Textfelder von anderen Webseiten auf Fokusänderungen zu überwachen:
Public Class Form1
' Eine Liste aus Input-Typen, die nicht auf Fokusänderungen überwacht
' werden sollen
Private Shared ReadOnly ignoredInputTypes As String() = {"hidden", "color", _
"checkbox", "radio", "file", "submit", "image", "reset", "button"}
Shared Sub New()
Array.Sort(ignoredInputTypes)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("http://www.vbarchiv.net/forum/search.php?f=")
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As _
WebBrowserDocumentCompletedEventArgs) Handles _
WebBrowser1.DocumentCompleted
If e.Url.ToString() <> "about:blank" Then 'bei about:blank ignorieren
Dim inputElements As HtmlElementCollection = _
WebBrowser1.Document.GetElementsByTagName("input")
For Each element As HtmlElement In inputElements
Dim addHandlers As Boolean = False
Dim type As String = element.GetAttribute("type")
If type.Length = 0 OrElse Array.BinarySearch(ignoredInputTypes, _
type) < 0 Then
addHandlers = True
End If
If addHandlers Then
'Ein Textfeld gefunden
element.AttachEventHandler("onfocus", AddressOf _
InputElementGotFocus)
element.AttachEventHandler("onblur", AddressOf _
InputElementLostFocus)
End If
Next
End If
End Sub
Private Sub InputElementGotFocus(sender As Object, e As EventArgs)
MessageBox.Show("Got Focus")
End Sub
Private Sub InputElementLostFocus(sender As Object, e As EventArgs)
MessageBox.Show("Lost Focus")
End Sub
End Class (bei unbekannten Input-Typen wie "textbox", den die vbArchiv-Suchseite verwendet, stellen Browser das Feld standardmäßig als Textfeld dar (Typ "text"), deshalb das Array mit den Input-Typen, die ignoriert werden sollen)
Allerdings gibts dabei noch ein paar Probleme, z.B. kann der Browser für das gleiche Dokument mehrmals das DocumentCompleted-Ereignis aufrufen (dadurch werden die Handler mehrfach hinzugefügt), oder z.B. ein clientseitiges JavaScript setzt den Fokus auf ein Textfeld, bevor die Handler hinzugefügt werden konnten. |