从应用程序数据本地文件夹

时间:2016-02-25 12:07:01

标签: c# xaml webview uwp windows-10-universal

我有一个要求,我需要从UWP中的xaml WebView中的app data文件夹加载html文件。 Html文件也引用另一个文件夹(“99 / js /”)中的不同Js文件。任何有UWP知识的人都会指导我。提前致谢 我使用以下代码,Browser是我的WebView。

  var Uri = new Uri("ms-appdata:///Local/Downloads/99/index.html");
  Browser.Navigate(Uri);

我在99文件夹中的文件夹结构是: udapte
我正在尝试在离线加载html文件到WebView,它没有加载相同的html文件正在加载服务器URL。

1 个答案:

答案 0 :(得分:10)

要在离线状态下index.html加载WebView,您需要确保index.html中使用的所有资源都正确地位于应用的LocalFolder中。 所有这些内容必须放在本地文件夹下的子文件夹中。

<{3}}中的

参考备注

  

要从应用的WebView classLocalFolder数据存储中加载未压缩和未加密的内容,请使用TemporaryFolder方法和使用NavigateUri。此方案的 WebView 支持要求您将内容放在本地或临时文件夹下的子文件夹中。这样可以导航到诸如ms-appdata:///之类的URI local / folder / file.html 和ms-appdata:/// temp / folder / file.html 。 (要加载压缩或加密的文件,请参阅ms-appdata scheme。)

例如,我创建了一个简单的index.html,其index.js文件夹中使用jsindex.css文件夹中使用css

<强>的index.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <script src="js/index.js"></script>
    <link href="css/index.css" rel="stylesheet" />
</head>
<body>
    <button id="myBtn">Click Me!</button>
    <div id="myDiv"></div>
</body>
</html>

<强> index.js

window.onload = function () {
    document.getElementById("myBtn").onclick = function () {
        document.getElementById("myDiv").innerHTML += "You have clicked once! <br>";
    }
}

<强> index.css

#myDiv {
    border: 2px dotted black;
    width: 500px;
    height: 500px;
}

他们位于我应用的LocalFolder中,如下所示:
NavigateToLocalStreamUri

然后在我的UWP应用程序中,我使用了以下代码:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <WebView x:Name="Browser" />
</Grid>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Browser.Navigate(new Uri("ms-appdata:///local/Downloads/index.html"));
}

这很有效:
enter image description here
因此,如果您的html文件未加载,请检查您应用的LocalFolder并确保您的html文件和资源位于正确的位置。

在本地计算机上,数据文件存储在文件夹

  

<强>%USERPROFILE%\应用程序数据\本地\软件包\ {包ID}

通常是 C:\ Users \ {UserName} \ AppData \ Local \ Packages \ {PackageId} ,其中 {UserName} 对应于Windows用户名, {PackageId} 对应于Windows应用包标识符,您可以在中找到 Package family name 应用程序清单文件的打包标签。包文件夹中的 LocalState 文件夹是LocalFolder。

对于移动模拟器,我们可以使用enter image description hereIsoStoreSpy等工具来检查LocalFolder。

如果你可以加载html文件,但缺少一些资源,比如缺少css样式,你可能需要检查你的html代码并确保引用是正确的。