【问题标题】:Windows 10 UWP Webview local url problemsWindows 10 UWP Webview 本地 url 问题
【发布时间】:2017-07-01 12:33:57
【问题描述】:

Windows 10 UWP 网页视图

我有两个 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");

页面加载并正确显示,但它不会显示链接的“submit.html”页面,它只是空白。

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

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

请大家出主意...

【问题讨论】:

  • 如果提交与 index.html 位于同一文件夹中,则将您的 index.html 更改为显示为 ms-appx-web://Submit.html,它应该可以工作。
  • 尝试了文件、URL 等的所有组合 - 全部在导航事件中可见,但没有显示页面。这两个文件在所有经过测试的浏览器上都能完美运行——我只是无法在 Web 视图中显示链接页面。我在 DOM 上的所有其他功能都可以正常工作。

标签: c# html webview uwp


【解决方案1】:

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

“GUID”是当前应用的包名,是URI schemesAuthority部分的默认值。因此,如果您只想导航到另一个页面,那么这条绝对路径是正确的。可以通过代码NavigateWebview(@"ms-appx-web://{your package name}/Assets//www/submit.html");进行测试

页面加载并正确显示,但它不会显示链接的“submit.html”页面,它只是空白

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

<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 有两种提交表单数据的方法。 Get 通过 URL 字符串发送表单数据,post 通过服务器发送表单数据。在我看来,post方法先发布数据,然后导航,数据在服务器端处理。我还没有看到在 HTML 页面上接收和处理发布的表单数据,所以我猜你不需要使用 post 方法。对于get方法,您可以接收数据并在javascript中处理它们,here是怎么做的。

【讨论】:

  • 是的,您是正确的更改来解决此问题,请问您从哪里获得此信息,因为我没有在 ms 文档中发现这是一个问题。
  • @SarahT,这其实不是uwp的相关知识。很抱歉,我也没有在 uwp 相关文档中看到此信息。仅根据 HTML form 标签定义,post 需要服务器端支持,并且可能是我在 MVC 项目中编写代码处理 post 需求代码方面的经验。
  • 非常感谢 - 你帮了大忙。
猜你喜欢
  • 2016-11-13
  • 1970-01-01
  • 2016-10-14
  • 2019-11-26
  • 2016-11-20
  • 2022-01-22
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
相关资源
最近更新 更多