Windows phone 8 从Javascript Windows phone浏览器调用c#函数

Windows phone 8 从Javascript Windows phone浏览器调用c#函数,windows-phone-8,browser,webbrowser-control,Windows Phone 8,Browser,Webbrowser Control,我可以从使用Webbrowser控件呈现的html文件的javascript调用c#函数吗? 在我的webbrowser控件中,我加载一个html页面,html页面包含一个函数callC#,它将在内部调用c#函数并传递一个参数。有什么方法可以做到这一点吗?在WPF中,我是在Awesomium webbrowser控件的帮助下完成的,下面是代码行 JSObject myObject = browsercontrol.CreateGlobalJavascriptObject("mya

我可以从使用Webbrowser控件呈现的html文件的javascript调用c#函数吗? 在我的webbrowser控件中,我加载一个html页面,html页面包含一个函数callC#,它将在内部调用c#函数并传递一个参数。有什么方法可以做到这一点吗?在WPF中,我是在Awesomium webbrowser控件的帮助下完成的,下面是代码行

        JSObject myObject = browsercontrol.CreateGlobalJavascriptObject("myappObj");
        myObject.Bind("MyCustomFunc", true, JSHandler_CustomFunc);

  private void JSHandler_CustomFunc(object sender, JavascriptMethodEventArgs args)
  {
        if (args.MustReturnValue)
        {

           string value = args.Arguments[0];
        }
  }
在javascript中,调用如下函数

 function callAppFunctionfromJS(){
 var returnVal2 = myappObj.MyCustomFunc(paramvalue);}

您可以通过
WebView
控件的
ScriptNotify
事件执行此操作

假设您的项目文件夹中有一个test.html文件。然后代码将如下所示:

HTML(test.HTML)

你也可以看看。其中包括一个更全面的WebView示例

编辑:我刚刚注意到它被标记为Windows Phone 8。如果是WindowsPhone8Silverlight应用程序,XAML看起来会有点不同(见下文),但原理是一样的

XAML Windows Phone 8 SilverLight

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <phone:WebBrowser x:Name="MyWebBrowser" ScriptNotify="WebBrowser_ScriptNotify" IsScriptEnabled="True" />
</Grid>

要从Javascript调用C#代码,请查看“window.external.notify”和WebView的ScriptNotify事件处理程序:

确保在WebBrowser控件上设置
isscript enabled=“True”
,并为
ScriptNotify
事件注册处理程序。
将加载新内容的是此事件处理程序。

否这一次是另一种情况。这一次,当用户点击HTML页面上的超链接时,我们希望向C代码发送一些数据
<Grid>
    <WebView x:Name="MyWebView"  ScriptNotify="WebView_ScriptNotify" Source="ms-appx-web:///test.html" />
</Grid>
private void WebView_ScriptNotify(object sender, NotifyEventArgs e)
{
     var args = e.Value; // will be "someParameters"
     // Call your C# method here       
}
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <phone:WebBrowser x:Name="MyWebBrowser" ScriptNotify="WebBrowser_ScriptNotify" IsScriptEnabled="True" />
</Grid>