2012-11-05 12 views
6

में लोड करें क्या मैं एक स्थानीय HTML फ़ाइल (छवियों और ... के साथ) WebView में लोड कर सकता हूं?
बस Source पैरामीटर सेट करना चाल नहीं करता है।स्थानीय HTML को वेबव्यू

उत्तर

13

आप जब तक फ़ाइल एप्लिकेशन पैकेज का हिस्सा है, जैसे है एक फ़ाइल से लोड कर सकते हैं:

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

से WebView.Navigate

WebView का उपयोग कर आवेदन के पैकेज से सामग्री लोड कर सकते हैं ms-appx-web: //, नेटवर्क से http/https, या स्ट्रिंग से NavigateToString का उपयोग कर। यह एप्लिकेशन के डेटा संग्रहण से सामग्री लोड नहीं कर सकता है। इंट्रानेट तक पहुंचने के लिए, अनुप्रयोग क्षमता में संबंधित क्षमता चालू होना चाहिए।

एक 'यादृच्छिक' फ़ाइल के लिए, मैं तुम्हें फिर फ़ाइल चुनें एक स्ट्रिंग में इसे पढ़ा और NavigateToString उपयोग करने के लिए आप फ़ाइल पिकर के माध्यम से उपयोगकर्ता संकेत दे सकती थी लगता है, लेकिन उपयोगकर्ता अनुभव वहाँ तुम क्या के आधार पर कुछ अजीब हो सकता है पूरा करने की कोशिश कर रहे हैं।

+0

से खोल सकते हैं मुझे नहीं लगता कि उद्धरण और लिंक अब एक मैच है। – Torleif

3

मैं एक लंबे समय के लिए इस समस्या पर काम कर रहा था और मुझे लगता है कि ऐसा करने के लिए एक रास्ता मिल गया: सबसे पहले आप InstalledLocation फ़ोल्डर में बचाने के लिए करना चाहिए। आप बस अपना उदाहरण में file.CopyAsync(htmlFolder, fname + ".html"); देखो उपयोग कर सकते हैं आप एक नया .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:///

संबंधित मुद्दे