2015-03-24 28 views
4

我試着去執行從C#JavaScript調用在GeckoFX控制器加載文檔,即時這樣做:調用JavaScript從C#中GeckoFX 33

public void evaluateScript(string command) 
{    
    System.Diagnostics.Debug.WriteLine("evaluateScript: " + command); 
    using (Gecko.AutoJSContext context = 
     new AutoJSContext(geckoWebBrowser1.Window.JSContext)) 
    { 
      string result; 
      context.EvaluateScript(
       command, 
       (nsISupports)geckoWebBrowser1.Window.DomWindow, 
       out result); 
    } 
} 

但是,這並不工作,我只找到一個解決方案調用geckoWebBrowser1.Navigate('javascript:functionName(1,2);');但與此,我無法恢復從functionName返回數據和使用Navigate進行JavaScript調用,我認爲是一個錯誤。有沒有辦法在DOM中調用JavaScript函數並在C#中接收它們的數據?

回答

5

我發現解決方案,在版本33中,API改變了一點,它更簡單,因爲默認情況下,如果您傳遞參數並直接返回結果,則EvaluateScript將WebBrowser DOM作爲默認上下文。

public void evaluateScript(string command) 
     { 

      System.Diagnostics.Debug.WriteLine("evaluateScript: " + command); 
      using (Gecko.AutoJSContext context = new AutoJSContext(geckoWebBrowser1.Window.JSContext)) 
      { 
       var result = context.EvaluateScript(command, geckoWebBrowser1.Window.DomWindow); 
      } 
     } 

在舊版本中,需要指定EvaluateScript的背景下,我發現的例子在這個網址:https://nhabuiduc.wordpress.com/2014/09/18/geckofx-net-webbrowser-setup-and-features/

+0

我不知道我的理解是在執行腳本女巫的背景下。 我想通過JSON返回數據到C#但是如果我執行「JSON.stringify({})」我得到「」而不是「{}」作爲返回在C# – hex 2015-10-02 18:20:23