Awesomium - 将Javascript结果返回给C#

时间:2013-03-24 04:59:18

标签: c# javascript awesomium

Javascript / HTML Code

<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”值,让我们在链接触发onclick事件时在C#中说“result”变量。我不知道该怎么做。有人能帮帮我......

注意:我对Awesomium还很新:)

更新

我按照@JonnyReeves方法进行了一些修改:

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

但是我得到了“Awesomium.Windows.Controls.WebControl”而不是点击的链接名称。

1 个答案:

答案 0 :(得分: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>