2013-03-24 95 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