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