我将简单的html文件(保存在项目中)加载到WebView上。它加载成功并显示“Hello World”标题。
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>ABC</title>
<script>
function SayHello() {
return "hello";
};
</script>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
webView.Navigate(new Uri("ms-appx-web:///index.html", UriKind.RelativeOrAbsolute));
// Exception below line
var data = await webView.InvokeScriptAsync("eval", new List<string> { "SayHello();" });
Debug.WriteLine(data);
}
我不明白为什么会这样。它在Google Chrome上成功运行。我在这里想念一下吗?
答案 0 :(得分:3)
关于Navigate方法的MSDN:
在指定的统一资源标识符处加载HTML内容 (URI)。
当您调用该方法时,它不会立即加载内容,可能需要一些时间。您需要侦听DOMContentLoaded事件,然后在页面实际加载到WebView时运行脚本。
webView1.DOMContentLoaded += webView1_DOMContentLoaded;
...
...
private async void webView1_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
{
var data = await webView.InvokeScriptAsync("eval", new List<string> { "SayHello();" });
Debug.WriteLine(data);
}
答案 1 :(得分:-1)