2012-11-06 71 views
5

我做了JavaScript注入到WebBrowser控件在C#(System.Windows.Controls.WebBrowser) 使得<C#>在C#Web瀏覽器控件從Javascript獲取返回值WPF

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

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

它的功能是,只要用戶點擊瀏覽器頁面中的任意點,它就會收集該點附近的href。

我想將href數組返回給我的C#,以便我可以使用這些鏈接創建按鈕。

然而,當我嘗試過,

Console.WriteLine(retVal); 

它未打印控制檯上什麼。 即使在我將它們轉換爲諸如帶有其他虛擬返回值的string或int之類的東西之後,它也不會打印任何東西。 我得到正確的回報? 有沒有什麼辦法可以測試從javascript輸出返回?

+0

您是否嘗試在調試時檢查'retVal'的值以查看它是否爲null或有值?如果它確實有一個值,那麼您應該能夠在調試時看到數據類型,屬性等等,以便更好地瞭解需要修改的內容以獲取所需的數據。 – Alexander

回答

0

我認爲這可能是一個範圍問題。您是否嘗試過移動

var domsArray = []; 

外(上圖)

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

功能?如

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

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

也是我認爲你缺少儘管這幾個分號(線script.txt的3 & 4)可能不應該有所作爲。