HTML-Viewer - "externe" Events?

In einem Projekt zu einem Info-Screen wird beim Antippen bestimmter Koordinaten in einem Canvas (Karte auf Touchscreen) seitlich ein HTML-Viewer eingeblendet, der weitere Informationen enthält. Für den Fall, dass der Betrachter einfach weggeht , ohne z.B. im HTML-Viewer zu scrollen, soll dieser nach einiger Zeit wieder verschwinden. Dazu müsste jede Bedienung des HTML-Viewers den Timer zurücksetzen. Leider funktioniert der Event “mouse down” bzw. “mouse drag” (wegen Scrollen auf den Touchscreen) nicht (Xojo 2023). Was kann ich tun?

Habe inzwischen selber eine Lösung gefunden!

Nach dem Laden der Webseite in den HTML-Viewer kann man nachträglich einen Event-Listener an z.B. das “document” anknüpfen. Da jede Webseite ein Document hat/ist, sollte das immer funktionieren. Bei anderen Elementen muss man deren Klasse oder ID kennen. Beispiel:

Var js As String = “”

js = “document.addEventListener(‘click’, function(){executeInXojo(‘FireJavaScriptRequest’, ‘click’);});”
hview.ExecuteJavaScript(js)

js = “document.addEventListener(‘mousemove’, function(){executeInXojo(‘FireJavaScriptRequest’, ‘move’);});”
hview.ExecuteJavaScript(js)

js = “document.addEventListener(‘mousedown’, function(){executeInXojo(‘FireJavaScriptRequest’, ‘down’);});”
hview.ExecuteJavaScript(js)

js = “document.addEventListener(‘mouseup’, function(){executeInXojo(‘FireJavaScriptRequest’, ‘up’);});”
hview.ExecuteJavaScript(js)

Dann braucht man am HTML-Viewer den Eventhandler “JavascriptRequest”. Hier wertet man das z.B. nach folgendem Muster aus (“list” ist eine Listbox zu Testzwecken):

Event JavaScriptRequest(method As String, parameters() as Variant) Handles JavaScriptRequest as String

  • list.addrow parameters(0).StringValue*
  • list.ScrollPosition = list.LastRowIndex*
    End Function