繁体   English   中英

在WP7 WebBrowser控件中从Javascript调用.NET对象

[英]Call .NET objects from Javascript in WP7 WebBrowser control

是否可以从WP7应用程序中的WebBrowser控件中加载的Javascript访问本地Windows Phone Silverlight C#/。NET对象?

不是直接的,但是WebBrowser中的javascript可以使用window.external.notify异步调用应用程序。 应用程序可以使用WebBrowser.ScriptNotify事件检测这些通知,并使用WebBrowser.InvokeScript回调javascript。

这是一个(未经测试的)示例。

HTML:

<html>
<head>
<script type="text/javascript">
    function beginCalculate()
    {
        var inputValue = parseInt(document.getElementById('inputText').value);

        window.external.notify(inputValue);
    }

    function endCalculate(result)
    {
        document.getElementById('result').innerHTML = result;
    }
</script>
</head>
<body>
    <h2>Add 5 to a number using notify</h2>

    <div>
        <input type="text" id="inputText" />
        <span> + 5 =</span>
        <span id="result">??</span>
    </div>

    <input type="button" onclick="beginCalculate()" />
</body>
</html>

应用:

/// <WebBrowser x:Name="Browser" ScriptNotify="Browser_ScriptNotify" />

private void Browser_ScriptNotify(objec sender, NotifyEventArgs e)
{
    int value = Int32.Parse(e.Value);

    string result = (value + 5).ToString();

    // endCalculate can return a value
    object scriptResult = Browser.InvokeScript("endCalculate", result);
}

如果您使用WP7的WebBrowser连接到远程网站(这必须是这种情况而WP7不承载Web服务器),您也可以从普通桌面测试Web应用程序。

通常,如果您需要在客户端(JavaScript)和服务器端(在您的情况下为C#)之间进行通信,具体取决于具体的上下文和需求,您可以使用一些不同的技术,例如Page Methods (google for ASP.NET页面方法) 。

我的理解是,WP7浏览器介于IE8和IE9之间,与两者相比,JavaScript引擎略有限制,但是像Page Method这样基本的东西应该可行,我会先从普通的PC然后从手机测试它,然后验证是否有效如果没有什么打破。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM