Загрузить локальный HTML в WebView
могу ли я загрузить локальный HTML-файл (с изображениями и ...) в WebView
?
Просто установка Source
параметр не делает трюк.
2 ответов
вы можете загрузить его из файла, если файл является частью пакета приложения, например:
WebView2.Source = new Uri("ms-appx-web:///assets/text.html");
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:///