1

Javascript / HTML代码

<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>

当链接上的 onclick 事件触发时,我想返回“clicked.name”值,让我们在 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”,结果不是点击链接的名称。

4

1 回答 1

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>
于 2013-03-24T07:48:21.437 回答