是否可以从WP7应用程序中的WebBrowser控件中加载的Javascript访问本地Windows Phone Silverlight C#/ .NET对象?
答案 0 :(得分:12)
不直接,但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);
}
答案 1 :(得分:0)
如果您使用WP7的WebBrowser连接到远程网站(并且必须如此,并且WP7不承载Web服务器),您也可以从普通桌面测试Web应用程序。
通常,如果您需要在客户端(JavaScript)和服务器端(在您的情况下为C#)之间进行通信,具体取决于具体的上下文和需求,您可以使用一些不同的技术,例如Page Methods
(google for ASP.NET页面方法)。
我的理解是WP7浏览器介于IE8和IE9之间,与两者相比,JavaScript引擎略有限制,但是像Page Method这样基本的东西应该可以工作,然后我会先从普通的PC然后从手机上测试它。验证是否有效以及是否有什么破坏。