我有一个要求,我需要从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。
答案 0 :(得分:10)
要在离线状态下index.html
加载WebView
,您需要确保index.html
中使用的所有资源都正确地位于应用的LocalFolder中。 所有这些内容必须放在本地文件夹下的子文件夹中。
参考备注:
要从应用的WebView class或LocalFolder数据存储中加载未压缩和未加密的内容,请使用TemporaryFolder方法和使用Navigate的Uri。此方案的 WebView 支持要求您将内容放在本地或临时文件夹下的子文件夹中。这样可以导航到诸如ms-appdata:///之类的URI local / folder / file.html 和ms-appdata:/// temp / folder / file.html 。 (要加载压缩或加密的文件,请参阅ms-appdata scheme。)
例如,我创建了一个简单的index.html
,其index.js
文件夹中使用js
,index.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"));
}
这很有效:
因此,如果您的html文件未加载,请检查您应用的LocalFolder并确保您的html文件和资源位于正确的位置。
在本地计算机上,数据文件存储在文件夹
中<强>%USERPROFILE%\应用程序数据\本地\软件包\ {包ID} 强>
通常是 C:\ Users \ {UserName} \ AppData \ Local \ Packages \ {PackageId} ,其中 {UserName}
对应于Windows用户名, {PackageId}
对应于Windows应用包标识符,您可以在中找到 Package family name
应用程序清单文件的打包标签。包文件夹中的 LocalState 文件夹是LocalFolder。
对于移动模拟器,我们可以使用或IsoStoreSpy等工具来检查LocalFolder。
如果你可以加载html文件,但缺少一些资源,比如缺少css样式,你可能需要检查你的html代码并确保引用是正确的。