2014-09-15 8 views
0

WebView.Navigate (URI) не загружает html-файл, на который указывает мой uri. PathToIndex от StorageFile.Path.WebView.Navigate показывает только белый экран

private static readonly Uri HomeUri = new Uri("ms-appx-web:///" + PathToIndex, UriKind.Absolute); 

html Я хочу загрузить из Zip-файла, который я распаковал раньше.
Любые предложения?

EDIT ответить Jogy в: Вот где я распаковал зип файл:

var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 
var unpackFolder = await localFolder.CreateFolderAsync(appName+"unzip", CreationCollisionOption.ReplaceExisting); 

тогда я сохранить index.html путь с StorageFile.Path.
Я попытался Ms-AppData, но я получаю исключение value does not fall within the expected range
я могу перебирать все файлы с

var files = await unpackFolder.GetFilesAsync(); 
foreach(var file in files) 
{ 
    string name = file.Path; 
} 


с NavigateToString я могу увидеть файл Html тоже, но Javascript и CSS до сих пор не работает ,

+0

Где вы распаковали zip-файл? Если он находится в папке данных приложения, попробовал ли вы использовать ms-appdata: /// local/как начало uri? – Jogy

+0

Значение переменной StorageFile.Path является 'C:/Data/Users/DefApps/APPDATA/Local/Packages/cd0b1e93-4db9-4f31-ae6a-6d606d6b9e71_n2dsc9ch8qzm0/LocalState/JavaBridgeTestunzip/index.html' –

ответ

1

ms-appx-web не работает, поскольку его можно использовать только для загрузки ресурсов из пакета приложений.

Я попытался Ms-AppData, а затем обыскали documentation и получается, что:

WebView не поддерживает MS-Appdata схемы, хотя он поддерживает MS-appx-веб-схему, которая вам может использовать для загрузки содержимого файлов из вашего приложения.

Обходным способом было бы прочитать содержимое файла в строке, а затем использовать WebView.NavigateToString(). Вы также можете изучить NavigateToLocalStreamUri(), если у вас есть внешние ресурсы для html.

+0

да, я уже пробовал NavigateToLocalStreamUri(), но я не получаю IUriToStreamResolver, и я не нашел никакой помощи. Вероятно, придется немного поработать над Google, чтобы он работал. Спасибо за вашу помощь –

1

Это поможет вам ... https://code.msdn.microsoft.com/windowsapps/XAML-WebView-control-sample-58ad63f7/

Мой пример:

StorageFolder d = await ApplicationData.Current.LocalFolder.CreateFolderAsync("folder", CreationCollisionOption.OpenIfExists); 
StorageFile f = await d.CreateFileAsync("index.html", CreationCollisionOption.ReplaceExisting); 
Stream str = await f.OpenStreamForWriteAsync(); 
using (StreamWriter sw = new StreamWriter(str)) 
{ 
    sw.Write("<html>...</html>"); 
} 
string url = "ms-appdata:///local/folder/index.html"; 
webView1.Navigate(new Uri(url)); 
1

Чтобы уточнить ответ NeoSvet в: ms-appdata работает только если вы храните ваш HTML-файл в подкаталоге LocalFolder, но не в корне , вот так: "ms-appdata:///local/[subfolder_name]/index.html".

Причины этого подробно описаны here: это делается для обеспечения определенного уровня изоляции для веб-контента и для того, чтобы WebView случайно не показывал другой контент в вашей локальной папке.

Смежные вопросы