| |
VB.NET - Ein- und UmsteigerRe: Aktivierung eines eingabefelds im webbrowser erkennen | | | Autor: Laserbrenner | Datum: 10.08.12 06:55 |
| Guten Margen,
@Preisser ja genau so eine Funktion habe ich gesucht, nur eben für alle webseiten.Hat man nicht irgendwie die möglichkeit den blinkenden Coursor abzufragen?
@Franki ich wolte bei aktivierung eines Eingabefeldes automatisch eine Bildschirmtastatur einblenden lassen um die bedienung zu erleichtern.
gruß
Matthias | |
Aktivierung eines eingabefelds im webbrowser erkennen | | | Autor: Laserbrenner | Datum: 09.08.12 19:00 |
| Hallo alle zusammen,
könnt Ihr mir verraten wie man die aktivierung eines Eingabefeldes in webbrowser element erkennen kann? also z.B. wenn auf Google das Eingabefeld angeklickt wird um ein Suchbegriff einzugeben.
vielen Dank
Matthias | |
Re: Aktivierung eines eingabefelds im webbrowser erkennen | | | Autor: Franki | Datum: 09.08.12 23:58 |
| Hallo,
das geht nicht, schon gar nicht bei fremden Websites.
Wenn du das für deine eigene Seite haben möchtest musst du clientseitig z.B. mit JavaScript arbeiten (GotFocus), aber auch das funktioniert nur dann wenn der User damit "einverstanden" ist.
Was genau möchtest du denn überhaupt erreichen? Das Anklicken eines Feldes sagt doch noch gar nichts aus.
Gruß
Frank | |
Re: Aktivierung eines eingabefelds im webbrowser erkennen | | | Autor: Preisser | Datum: 10.08.12 00:46 |
| Hallo,
tatsächlich kann man das DOM eines eingebetteten Webbrowsers verwenden, um die Nodes des geladenen HTML-Dokuments zu manipulieren und beispielsweise auch Eventhandler hinzuzufügen, z.B. so (hier eine Form mit einem "Webbrowser1"):
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("http://www.google.de/")
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As _
WebBrowserDocumentCompletedEventArgs) Handles _
WebBrowser1.DocumentCompleted
If e.Url.ToString() = "http://www.google.de/" Then 'nur bei der
' Google-Startseite
Dim inputElements As HtmlElementCollection = _
WebBrowser1.Document.GetElementsByTagName("input")
For Each element As HtmlElement In inputElements
If element.Name = "q" Then
'Sucheingabefeld gefunden
element.AttachEventHandler("onfocus", _
Sub(sender2 As Object, e2 As EventArgs)
MessageBox.Show("Suchfeld Fokus")
End Sub)
End If
Next
End If
End Sub
End Class Dort sollte die Google-Seite geladen werden, und immer wenn dann die Suchtextbox den Fokus bekommt, sollte eine Meldung angezeigt werden.
Beitrag wurde zuletzt am 10.08.12 um 01:04:15 editiert. | |
Re: Aktivierung eines eingabefelds im webbrowser erkennen | | | Autor: Micke | Datum: 10.08.12 10:07 |
| Moin,
dazu müßtest du (einfach) die Webseite beim laden im browser modifizieren, ist ja nur text. du würdest den html elementen input ein event deiner wahl hinzufügen, in dem die javascript funktion mit der tastaturanzeige aufgerufen wird.
diese funktion kannst du genauso einfach in die seite stecken.
es gibt zahlreiche browserplugins die das gleiche machen, und bspw. werbung und andere scripte entfernen & hinzufügen.
Micke
Beitrag wurde zuletzt am 10.08.12 um 10:11:43 editiert. | |
Re: Aktivierung eines eingabefelds im webbrowser erkennen | | | Autor: Preisser | Datum: 10.08.12 13:12 |
| 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. | |
Re: Aktivierung eines eingabefelds im webbrowser erkennen | | | Autor: Micke | Datum: 10.08.12 13:38 |
| Hi Preisser,
sorry hab deinen post zu beginn nicht gesehen, gute idee.
@Laserbrenner:
wenn du wählen kannst zwischen meinem Weg das html zu frisieren und dem von Preisser, nimm den von Preisser. Meiner braucht zwar weniger Rahmenbedingungen, aber typisierter ist natürlich besser.
Micke
Beitrag wurde zuletzt am 10.08.12 um 13:41:57 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|