2012-11-06 31 views
5

tôi đã thực hiện tiêm JavaScript vào điều khiển WebBrowser trong C# (System.Windows.Controls.WebBrowser) như vậy mà, <C#>Bắt giá trị trả về từ Javascript trong kiểm soát # WebBrowser C WPF

IHTMLDocument2 webdoc = (IHTMLDocument2)webBrowser1.Document; 
string var = File.ReadAllText("C:/.../Resources/script.txt"); 
object retVal = webdoc.parentWindow.execScript(var, "Jscript"); 

và tệp JavaScript script.txt là,

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); 
}}); 

Những gì nó làm là, bất cứ khi nào người dùng nhấp vào bất kỳ điểm nào trong trang webbrowser, nó thu thập href gần điểm đó.

Tôi muốn trả về mảng href, cho C# của tôi để tôi có thể tạo các nút bằng các liên kết đó.

Tuy nhiên, khi tôi cố gắng,

Console.WriteLine(retVal); 

Nó không in bất cứ điều gì trên console. Ngay cả sau khi tôi chuyển chúng thành những thứ như chuỗi hoặc int với các giá trị trả lại giả khác, nó không in bất cứ thứ gì. Tôi có nhận được trả lại chính xác không? Có cách nào để tôi có thể kiểm tra trả về đầu ra từ javascript không?

+0

Bạn đã thử kiểm tra giá trị 'retVal' trong khi gỡ lỗi để xem liệu giá trị đó là rỗng hay có giá trị? Nếu nó có giá trị, thì bạn sẽ có thể thấy kiểu dữ liệu, thuộc tính, v.v ... trong khi gỡ lỗi để có ý tưởng tốt hơn về những gì bạn cần sửa đổi để lấy dữ liệu bạn muốn. – Alexander

Trả lời

0

Tôi nghĩ đây có thể là vấn đề phạm vi. bạn đã cố gắng di chuyển

var domsArray = []; 

ngoài (ở trên)

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

chức năng? như

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

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

cũng Tôi nghĩ rằng bạn đang thiếu một vài dấu chấm phẩy (dòng 3 & 4 của script.txt) mặc dù có lẽ không nên tạo sự khác biệt.

Các vấn đề liên quan