Das ist ein bischen kompliziert :) Also ich hab zwar nicht das GeckoFX eingebunden sondern arbeite direkt mit dem XULrunner, aber so in etwa geht das: 1) Erstelle im XUL code einen Eventhandler für das geladene Dokument:
document.addEventListener("Debug", Debug, false, true); function Debug(event) { // mache was event.target.setAttribute("result","rückgabewert"); }
2) Feuere im JS code des Dokuments um die 'funktion' Debug in XUL 'aufzurufen'
var ev = document.createEvent("Events"); ev.initEvent(functionName, true, false); element.dispatchEvent(ev); var result = ev.target.getAttribute("result");
3) Um Parameter an XUL weiterzuleiten nutze ein unsichtbares SPAN
// JS code im Dokument: var element = document.getElementById(functionName+"Args"); if( element ) document.documentElement.removeChild(element); else element = document.createElement("span"); element.id = functionName+"Args"; for(var i=0; i<arguments.length; i++) element.setAttribute("arg"+i, to_json(arguments[i])); document.documentElement.appendChild(element); // im XUL code dann auf das element mit der id // functionName+"Args" zugreifen und die Argumente auslesen
Hmm also soweit ich weiß gibts beim Webbrowser Control ein Scripting Objekt, mit diesem werden Methoden zur Verfügung gestellt, um ein Event vom Javascript in die C# Umgebung zurück zu geben. Ich nehme mal an dass das geckoWebBrowser Control nur irgendwie abgeleitet ist - es müsste also etwas ähnliches geben. Da du die Website ja ehh erstellst, kannst du die entsprechenden Javascript Links gegen die Scripting-Object Methoden (window.external) austauschen und bekommst somit die Events zurück.
Vielen Dank für deine Antwort.
Hat mir sehr weitergeholfen.
huckepick