将本地HTML加载到WebView中

时间:2012-11-05 04:09:24

标签: windows-8 microsoft-metro

我可以将本地HTML文件(包含图片和...)加载到WebView吗? 只设置Source参数不起作用。

2 个答案:

答案 0 :(得分:13)

只要文件是应用包的一部分,您就可以从文件中加载它,例如:

WebView2.Source = new Uri("ms-appx-web:///assets/text.html");

来自WebView.Navigate

  

WebView可以使用应用程序包加载内容   ms-appx-web://,来自使用http / https的网络,或来自字符串   使用NavigateToString。它无法从应用程序加载内容   数据存储。要访问Intranet,请使用相应的功能   必须在应用程序清单中打开。

对于'随机'文件,我想你可以通过文件选择器提示用户选择文件,然后将其读成字符串并使用NavigateToString,但用户体验可能有点奇怪取决于什么你想要完成。

答案 1 :(得分:3)

我在这个问题上工作了很长时间,我找到了一种方法: 首先,您应将其保存在 InstalledLocation 文件夹中。如果您无法创建新的.html文件,则可以使用file.CopyAsync(htmlFolder, fname + ".html");  看看我的例子:

StorageFolder htmlFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.CreateFolderAsync(@"HtmlFiles", CreationCollisionOption.GenerateUniqueName);
IStorageFile file = await htmlFolder .CreateFileAsync(fname + ".html", CreationCollisionOption.GenerateUniqueName);

并且您可以轻松打开.html文件:

var fop = new FileOpenPicker();
fop.FileTypeFilter.Add(".html");
var file = await fop.PickSingleFileAsync();
if (file != null)
{
   string myPath = file.Path.Substring(file.Path.IndexOf("HtmlFiles"));
   myWebview.Navigate(new Uri("ms-appx-web:///" + myPath));
}

请记住,只能从 InstalledLocation 开始,您可以使用ms-appx-web:///

打开它