2013-03-24 96 views
1

的JavaScript/HTML代碼Awesomium - 返回的Javascript結果到C#

<script type="text/javascript"> 
function configurator(clicked) { 
return clicked.name; 
} 
</script> 

<a name="link1" href="#" onclick="configurator(this)">Link 1</a> 
<a name="link2" href="#" onclick="configurator(this)">Link 2</a> 

我要回了「clicked.name」的價值,讓我們說,在C#「結果」變量時,鏈接onclick事件觸發。我不知道該怎麼做。有人能幫助我...

注:我還是很新的Awesomium :)

更新:

我跟隨@JonnyReeves方法有一點修改:

using (JSObject myGlobalObject = webControl1.CreateGlobalJavascriptObject("myGlobalObject")) 
{ 
    myGlobalObject.Bind("onLinkClicked", true, (sen, eve) => 
    { 
     MessageBox.Show(Convert.ToString(sen)); 
    }); 
} 

但我得到了「Awesomium.Windows.Controls.WebControl」作爲結果而不是點擊鏈接的名稱。

+0

[阿賈克斯(https://developer.mozilla.org/en-US/docs/AJAX)。無法簡單地將數據「返回」到服務器,但是您可以創建一個單獨的請求並將數據一起傳遞。 – 2013-03-24 05:32:26

+0

我沒有使用任何Web服務器。我只是使用Awesomium(WebControl)作爲瀏覽器。我仍然在學習如何在C#和html(Awesomium)之間交換數據。 – Reyn 2013-03-24 05:45:23

+0

Duplicate of accepted answer ...:http://stackoverflow.com/questions/8089912/how-to-return-javascript-results-back-to-c-sharp-with-awesomium?rq=1 – 2014-02-23 15:40:33

回答

0

它看起來像你可以使用Awesomium的JSObject.bind方法從JavaScript調用C#方法。一個典型的方法是公開一個JavaScript全局對象,其中包含所有'橋接'方法(即:在C#和JavaScript之間傳遞數據的方法)。

// Create and acquire a Global Javascript object. 
// These object persist for the lifetime of the web-view. 
using (JSObject myGlobalObject = webView.CreateGlobalJavascriptObject("myGlobalObject")) 
{ 
    // The handler is of type JavascriptMethodEventHandler. Here we define it 
    // using a lambda expression. 
    myGlobalObject.Bind("onLinkClicked", false, (name) => 
    { 
     Debug.Print(String.Format("User clicked: {0}", name)); 
    }); 
} 

現在,您可以從您的JavaScript代碼調用此方法:

<script type="text/javascript"> 
    function configurator(clicked) 
    { 
      myGlobalObject.onLinkClicked(clicked.name); 
    } 
</script> 
+0

我試過了代碼,但在「Delegate」Awesomium.Core.JavascriptMethodEventHandler'不接受1個參數「時出錯,所以我稍微改了一下你的代碼(見OP)。但我無法獲取點擊鏈接的名稱()。 – Reyn 2013-03-24 10:39:16