I JavaScript Injektion in WebBrowser-Steuerelement in C# (System.Windows.Controls.WebBrowser)
so dass Erste Rückgabewert von Javascript in Kontrolle C# Web-Browser WPF
IHTMLDocument2 webdoc = (IHTMLDocument2)webBrowser1.Document;
string var = File.ReadAllText("C:/.../Resources/script.txt");
object retVal = webdoc.parentWindow.execScript(var, "Jscript");
und die JavaScript-Datei script.txt ist,
var headID = document.getElementsByTagName('head')[0];
var newScript = document.createElement('script');
newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js'
headID.appendChild(newScript)
$('body').bind('click',function(e){
var domsArray = [];
for (var i = 0; i < 15; i++){
for (var j = 0; j < 15; j++){
if (document.elementFromPoint(e.clientX+i, e.clientY+j) && (jQuery.inArray(document.elementFromPoint(e.clientX+i, e.clientY+j), domsArray) < 0)){
domsArray.push(document.elementFromPoint(e.clientX+i, e.clientY+j));
}if (document.elementFromPoint(e.clientX-i, e.clientY+j) && (jQuery.inArray(document.elementFromPoint(e.clientX-i, e.clientY+j), domsArray) < 0)){
domsArray.push(document.elementFromPoint(e.clientX-i, e.clientY+j));
}if (document.elementFromPoint(e.clientX+i, e.clientY-j) && (jQuery.inArray(document.elementFromPoint(e.clientX+i, e.clientY-j), domsArray) < 0)){
domsArray.push(document.elementFromPoint(e.clientX+i, e.clientY-j));
}if (document.elementFromPoint(e.clientX-i, e.clientY-j) && (jQuery.inArray(document.elementFromPoint(e.clientX-i, e.clientY-j), domsArray) < 0)){
domsArray.push(document.elementFromPoint(e.clientX-i, e.clientY-j));
}}}
for (var p = 0; p < domsArray.length; p++){
alert(domsArray[p].href);
}});
<C#>
gemacht
Wenn ein Benutzer auf einen beliebigen Punkt der Webbrowser-Seite klickt, wird der Href in der Nähe dieses Punktes erfasst.
Ich wollte das href-Array an meine C# zurückgeben, damit ich Schaltflächen mit diesen Links erstellen kann.
jedoch, als ich versuchte,
Console.WriteLine(retVal);
Es hat nichts auf der Konsole drucken. Auch nachdem ich sie in Dinge wie string oder int mit anderen Dummy-Rückgabewerten umgewandelt habe, hat sie nichts gedruckt. Erhalte ich eine korrekte Rückgabe? Gibt es eine Möglichkeit, dass ich die Ausgabe Rückgabe von Javascript testen kann?
Haben Sie versucht, den Wert von 'retVal' während des Debuggens zu überprüfen, um festzustellen, ob es null ist oder einen Wert hat? Wenn es einen Wert hat, sollten Sie in der Lage sein, den Datentyp, Eigenschaften usw. während des Debuggens zu sehen, um eine bessere Vorstellung davon zu bekommen, was Sie ändern müssen, um die gewünschten Daten zu erhalten. – Alexander