zrobiłem zastrzyk JavaScript do kontroli WebBrowser w C# (System.Windows.Controls.WebBrowser)
taka, <C#>
Uzyskiwanie wartości zwracanej z Javascript w C kontrolą # WebBrowser WPF
IHTMLDocument2 webdoc = (IHTMLDocument2)webBrowser1.Document;
string var = File.ReadAllText("C:/.../Resources/script.txt");
object retVal = webdoc.parentWindow.execScript(var, "Jscript");
i script.txt plik JavaScript jest
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);
}});
Co to jest, gdy użytkownik kliknie na dowolny punkt na stronie przeglądarki, gromadzi href w pobliżu tego punktu.
Chciałem zwrócić tablicę href do mojego C#, dzięki czemu mogę tworzyć przyciski z tymi linkami.
Jednakże, gdy próbowałem,
Console.WriteLine(retVal);
To nic nie drukować na konsoli. Nawet po tym, jak rzuciłem je na takie rzeczy jak string lub int z innymi fałszywymi wartościami zwracanymi, to nic nie wydrukowało. Czy otrzymuję prawidłowy zwrot? Czy istnieje sposób, w jaki można przetestować wynik wyjściowy z javascript?
Czy próbowałeś sprawdzić wartość 'retVal' podczas debugowania, aby sprawdzić, czy jest on pusty lub ma wartość? Jeśli ma wartość, powinieneś być w stanie zobaczyć typ danych, właściwości itp ... podczas debugowania, aby uzyskać lepszy obraz tego, co musisz zmodyfikować, aby uzyskać pożądane dane. – Alexander