【问题标题】:How to pass parameter from javascript to C# method in windows phone hybrid application如何在 Windows Phone 混合应用程序中将参数从 javascript 传递到 C# 方法
【发布时间】:2014-05-21 06:59:55
【问题描述】:

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

HTML

<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);
}

【问题讨论】:

  • “但我只需要junk() 方法的参数”是什么意思?
  • 如果我使用多个带参数的方法,我将在 webBrowser_ScriptNotify() 消息框中收到所有这些在这种情况下,我将如何从 junk() 单独获取它

标签: c# javascript visual-studio-2012 windows-phone-8


【解决方案1】:

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

取自Matthias Shapiro's blog的代码示例(虽然您已经在这样做,但上面的信息中缺少它)


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

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

或者通过在 xaml.cs 文件中分配它

Browser.ScriptNotify += HTML_Script_Launched;

当然,您的处理程序被称为“HTML_Script_Launched”的“webBrowser_ScriptNotify”。

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

也许NotifyEventArgs e 对象包含其他信息? (我自己没有研究过)

或者您可以定义自己的格式来发送消息(在本例中来自 junk() 方法)和有关消息来源的详细信息;一种“元数据”,如果你愿意的话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2018-02-02
    • 1970-01-01
    相关资源
    最近更新 更多