2012-11-06 16 views
5

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?

+0

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

Odpowiedz

0

Myślę, że to może być problem z zasięgiem. Czy próbowałeś przesuwając

var domsArray = []; 

poza (ponad) Funkcja

$('body').bind('click',function(e){ .... 

? takich jak

var domsArray = []; 
$('body').bind('click',function(e){ 

    for (var i = 0; i < 15; i++){ < ... etc ....> 

także myślę, że brakuje kilka średnikami (linie 3 & 4 script.txt), chociaż to prawdopodobnie nie powinien zrobić różnicę.

Powiązane problemy