ho fatto l'iniezione JavaScript nel controllo WebBrowser in C# (System.Windows.Controls.WebBrowser)
tale che, <C#>
Ottenere valore restituito da JavaScript in C# controllo Webbrowser WPF
IHTMLDocument2 webdoc = (IHTMLDocument2)webBrowser1.Document;
string var = File.ReadAllText("C:/.../Resources/script.txt");
object retVal = webdoc.parentWindow.execScript(var, "Jscript");
e il file JavaScript script.txt è,
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);
}});
Quello che fa è che ogni volta che un utente fa clic su qualsiasi punto della pagina del browser, raccoglie l'href vicino a quel punto.
Ho voluto restituire l'href array, al mio C# in modo che sia possibile creare pulsanti con tali collegamenti.
Tuttavia, quando ho provato,
Console.WriteLine(retVal);
Non è stato stampato nulla sulla console. Anche dopo averli inseriti in cose come string o int con altri valori di ritorno fittizi, non ha stampato nulla. Sto ottenendo il ritorno corretto? Esiste un modo per testare il ritorno dell'output da javascript?
Hai provato a controllare il valore di 'retVal' durante il debug per vedere se è nullo o ha un valore? Se ha un valore, dovresti essere in grado di vedere il tipo di dati, proprietà, ecc ... durante il debug per avere un'idea migliore di ciò che devi modificare per ottenere i dati che desideri. – Alexander