无法使用WebView Universal Windows App运行简单脚本

时间:2016-03-15 15:25:39

标签: windows-phone win-universal-app

我将简单的html文件(保存在项目中)加载到WebView上。它加载成功并显示“Hello World”标题。

文件index.html

<!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>

加载到WebView

 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上成功运行。我在这里想念一下吗?

2 个答案:

答案 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)

我认为你应该去URI中的Manifest个人资料, Windows运行时访问=全部 Type = Include

enter image description here