2012-11-05 28 views
6

Posso caricare un file HTML locale (con immagini e ...) in un WebView?
L'impostazione del parametro Source non risolve il problema.Carica HTML locale in WebView

risposta

13

È possibile caricare da un file fino a quando il file è parte del pacchetto app, ad esempio:

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

Da WebView.Navigate

WebView può caricare contenuti dal pacchetto dell'applicazione utilizzando ms-appx-web: //, dalla rete utilizzando http/https o da una stringa utilizzando NavigateToString. Non può caricare il contenuto dall'archivio dati dell'applicazione. Per accedere alla Intranet, la funzionalità corrispondente deve essere attivata nel manifest dell'applicazione.

Per un file 'random', suppongo che si possa richiedere all'utente tramite selettore file per selezionare il file poi leggerlo in una stringa e utilizzare NavigateToString, ma l'esperienza utente ci può essere un po 'strano a seconda di ciò che si stai provando a realizzare.

+0

Non penso che la citazione e il collegamento siano più una corrispondenza. – Torleif

3

stavo lavorando a questo problema per molto tempo e ho trovato un modo per farlo: In un primo momento si dovrebbe salvarla nella cartella InstalledLocation. Se non si dispone di opzione per creare un nuovo file HTML si può semplicemente utilizzare file.CopyAsync(htmlFolder, fname + ".html"); sguardo nel mio esempio:

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

e di quanto si può facilmente aprire il file .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)); 
} 

Remember solo da InstalledLocation è possibile aprirlo con ms-appx-web:///

Problemi correlati