将Javascript结果返回到c#

Awesomium - Return Javascript Result to C#

本文关键字:返回 结果 Javascript      更新时间:2023-09-26

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>

我想返回"clicked.name"值,让我们说"result"变量在c#当onclick事件上的链接触发。我不知道该怎么做。谁能帮我一下……

注意:我还是Awesomium的新手:)

更新:

我遵循@JonnyReeves的方法,稍微修改一下:

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

但是我得到了"Awesomium.Windows.Controls"。

看起来你可以使用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>