Windows 10 UWP Webview本地URL问题

时间:2017-02-13 13:41:40

标签: c# html webview uwp

Windows 10 UWP Webview

我有两个html文件位于Windows 10 UWP中Assets(Assets / www / xxx.html)下的www文件夹中,VS 2015中的两个文件都设置为复制到输出目录。

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Simple Script</title>
</head>

<body>
    <form action="submit.html" method="post">
    Data:<input type="text" name="somedata" > <br> <br>
    <input type="submit" value="Submit" >
    </form>
</body>
</html>

and submit.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Dummy Submission</title>
</head>

<body>
  <h2> Your data has been submitted - Thank You. </h2>
</body>
</html>

Webview对象嵌入XMAL中,如下所示

<WebView  x:Name="WebBrowser" HorizontalAlignment="Left" VerticalAlignment="Top"  Height="532" Width="1014" NavigationStarting="WebBrowser_NavigationStarting"/>

索引页面由

加载
    /// Helper to perform the navigation in webview
    /// </summary>
    /// <param name="url"></param>
    private void NavigateWebview(string url)
    {
        try
        {
            Uri targetUri = new Uri(url);
            WebBrowser.Navigate(targetUri);
        }
        catch (FormatException myE)
        {
            // Bad address
            WebBrowser.NavigateToString(String.Format("<h1>Address is invalid, try again.  Details --> {0}.</h1>", myE.Message));
        }
    }


NavigateWebview(@"ms-appx-web:///Assets/www/index.html");

页面正确加载并显示,但不会显示已关联的&#39; submit.html&#39;页面,它只是空白。

如果我捕获导航事件,它确实发生但似乎以GUID作为前缀,如下所示。

enter image description here 我已将路径更改为绝对等,并详细阅读文档,但我不明白为什么这不起作用。

想法请伙计......

1 个答案:

答案 0 :(得分:1)

  

如果我捕获导航事件,它确实发生但似乎以GUID为前缀,如下所示

&#34; GUID&#34;是当前应用的包名称,它是URI schemes权限的默认值。因此,如果您只想导航到另一个页面,那么这条绝对的路径是正确的。您可以按代码NavigateWebview(@"ms-appx-web://{your package name}/Assets//www/submit.html");

进行测试
  

页面正确加载并显示,但不会显示已关联的&#39; submit.html&#39;页面,它只是空白

对于您的问题,我将form方法更改为获取,它会起作用。

<form action="submit.html"  method="get" id="myform">
    Data:<input type="text" name="somedata"> <br> <br>
    <input type="submit" value="Submit">
</form>
<a href="submit.html">Please Click Me to jump</a>

form有两种提交表单数据的方法。通过URL字符串获取发送表单数据,通过服务器发送表单数据。在我看来,post方法首先发布数据然后导航,数据在服务器端处理。我还没有看到在HTML页面上收到并处理过的表单数据,所以我猜你不需要使用post方法。对于get方法,您可以通过javascript接收数据并进行处理,here是如何做的。