2012-11-05 30 views
6

Tôi có thể tải tệp HTML cục bộ (có hình ảnh và ...) vào một số WebView không?
Chỉ cần đặt tham số Source không thực hiện thủ thuật.Tải HTML cục bộ vào WebView

Trả lời

13

Bạn có thể tải nó từ một tập tin miễn là tập tin là một phần của gói ứng dụng, ví dụ:

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

Từ WebView.Navigate

WebView có thể tải nội dung từ gói của ứng dụng sử dụng ms-appx-web: //, từ mạng sử dụng http/https hoặc từ chuỗi bằng NavigateToString. Nó không thể tải nội dung từ bộ nhớ dữ liệu của ứng dụng. Để truy cập mạng nội bộ, khả năng tương ứng phải được bật trong tệp kê khai ứng dụng.

Đối với một tập tin 'ngẫu nhiên', tôi giả sử bạn có thể nhắc nhở người dùng thông qua chọn tệp để chọn tập tin sau đó đọc nó vào một chuỗi và sử dụng NavigateToString, nhưng kinh nghiệm người dùng có thể có một chút lẻ tùy thuộc vào những gì bạn đang cố gắng hoàn thành.

+0

Tôi không nghĩ báo giá và liên kết là một kết quả nữa. – Torleif

3

Tôi đã làm việc trong vấn đề này trong một thời gian dài và tôi đã tìm cách để làm điều đó: Lúc đầu, bạn nên lưu nó trong InstalledLocation thư mục. Nếu bạn chưa có tùy chọn để tạo một file .html mới, bạn chỉ có thể sử dụng file.CopyAsync(htmlFolder, fname + ".html"); Nhìn vào ví dụ của tôi:

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

và hơn bạn có thể dễ dàng mở file .html của bạn:

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)); 
} 

Ghi chỉ từ InstalledLocation bạn mới có thể mở bằng ms-appx-web:///

Các vấn đề liên quan