我遇到了WebView控件的问题。我正在开发Windows 8 Metro Style应用程序,我正在尝试在WebView的内容中调用脚本,但它总是返回空字符串。
我试图将它设为“WebView.InvokeScript(”eval“,new string [] {”document.getElementById('contentDiv')。offsetHeight“}),但它的工作方式相同 - 空字符串.I真的没有猜到这里有什么不对。
public void Sethtml(string html) {
var toSet = string.Format(Style, html);
wv.LoadCompleted += wv_LoadCompleted;
wv.NavigateToString(toSet);
}
void wv_LoadCompleted(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)
{
WebView wv = sender as WebView;
string height = wv.InvokeScript("heightFun", new string[0]);
}
public static readonly string Style = @"<!DOCTYPE html>
<html>
<head>
<title></title>
<style>
body {{
font-family: Segoe UI;
}}
</style>
<script type='text/javascript'>
var heightFun = function() {{
return document.getElementById('contentDiv').offsetHeight;
}}
</script>
</head>
<body>
<div id='contentDiv'>
{0}
</div>
</body>";
答案 0 :(得分:2)
您必须使用window.external.notify
发回一个值。
查看论坛帖子:
http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/ac390a6a-d4ad-408c-8b13-93f9694cbabe
答案 1 :(得分:2)
通过前面的答案提示解决了这个问题。
确保您的返回值是一个字符串。