Загрузить локальный HTML в WebView

могу ли я загрузить локальный HTML-файл (с изображениями и ...) в WebView?
Просто установка Source параметр не делает трюк.

2 ответов


вы можете загрузить его из файла, если файл является частью пакета приложения, например:

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

С WebView.Навигация

WebView может загружать содержимое из пакета приложения ms-appx-web://, из сети с использованием http / https или из строки использование NavigateToString. Не удается загрузить содержимое из приложения хранение данных. Для доступа к интрасети, соответствующая возможность необходимо включить в приложении декларация.

для "случайного" файла, я полагаю, вы можете предложить пользователю через file picker выбрать файл, а затем прочитать его в строку и использовать navigatetostring, в, но пользовательский опыт может быть немного странным в зависимости от того, что вы пытаетесь выполнить.


Я работал над этой проблемой в течение длительного времени и я нашел способ сделать это: Сначала вы должны сохранить его в 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:///