在windows phone混合应用程序中如何将参数从javascript传递到c#方法

本文关键字:javascript 方法 参数 混合 phone windows 应用程序 | 更新日期: 2023-09-27 18:04:26

我正在创建一个混合windows phone应用程序,其中我需要通过script.notify将参数从html中的javascript函数传递到c#方法

<html>
<body onload="junk('hello')">
    <script>
        function junk(name) {
            window.external.notify("Hello " + name);
        }
    </script>
</body>
</html>

我的问题是如何在c#中获得这个特定方法的参数junk()

如果我使用下面的代码,我将接收来自所有方法的所有参数,但我只需要junk()方法的参数

void webBrowser_ScriptNotify(object sender, NotifyEventArgs e)
{
    MessageBox.Show(e.Value);
}

在windows phone混合应用程序中如何将参数从javascript传递到c#方法

您将从WebBrowser控件中接收所有脚本通知(来自所有方法),因为您的事件处理程序webBrowser_ScriptNotify链接到该WebBrowser:

摘自Matthias Shapiro的博客的代码示例(尽管您已经这样做了,但在上面的信息中缺少)


我们可以告诉我们的应用程序处理脚本启动,或者在我们的WebBrowser的XAML中:

<phone:WebBrowser x:Name="Browser" ScriptNotify="HTML_Script_Launched" />

或者在example .cs文件

中赋值
Browser.ScriptNotify += HTML_Script_Launched;

当然你的处理程序被称为'webBrowser_ScriptNotify'而不是' html_script_launching '。

所以在webBrowser_ScriptNotify中,你必须确定window.external.notify是从哪个方法/来源完成的。

也许NotifyEventArgs e对象包含额外的信息?(我自己没有研究过这个)

或者您可以定义自己的格式来发送消息(在本例中来自junk()方法)和消息来源的详细信息;一种"元数据"