2011-01-10 28 views

Trả lời

63

Đoạn mã dưới đây sẽ được tải một file HTML có tên index.html trong thư mục dự án của bạn:

[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]]; 
+0

Tài liệu của Apple gợi ý rằng việc sử dụng phương pháp này để tải HTML cục bộ không an toàn: '' 'Để giúp bạn tránh bị dễ bị tấn công bảo mật, hãy sử dụng phương pháp này để tải các tệp HTML cục bộ; không sử dụng loadRequest: .''' Tôi đã ghi lại đề xuất của họ ('loadHTMLString: baseURL:') trong câu trả lời của tôi bên dưới. –

+0

Vâng, nó đã không nói rằng 5 năm trước khi tôi đăng câu trả lời này. Luôn luôn tốt để đọc tài liệu. Tôi sẽ xóa nó, nhưng đó là câu trả lời được chấp nhận và rõ ràng đã giúp rất nhiều người. –

28

Cody Grey là đúng nhưng cũng có cách này:

// Load the html as a string from the file system 
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]; 
NSString *html = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; 

// Tell the web view to load it 
[WebView loadHTMLString:html baseURL:[[NSBundle mainBundle] bundleURL]]; 

này rất hữu ích nếu bạn cần phải chỉnh sửa html trước khi bạn tải nó.

+0

Bạn nói đúng nhưng tôi sẽ chuyển '[NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]]' thay vì 'nil' cho' baseURL'. – Jilouc

+0

Ah có - Tôi không nhớ về việc tải các tài nguyên khác từ html. Tôi đã chỉnh sửa câu trả lời của tôi, cảm ơn! – deanWombourne

+0

Tôi muốn chuyển [[NSBundle mainBundle] bundleUrl] –

2

Bằng cách sử dụng mã sau bạn có thể tải một html trong một web WebView.here là xem web obj và inde

Web.delegate = self; 

[Web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]]; 
5

Swift

guard let path = NSBundle.mainBundle().pathForResource("index", ofType: "html") else { 
     return 
    } 

    let url = NSURL(fileURLWithPath: path) 
    self.webview.loadRequest(NSURLRequest(URL:url)) 
0

Swift phiên bản 2.1

// load html to String with Encoding 
let path = NSBundle.mainBundle().pathForResource("policy", ofType: "html") 
do { 
    let fileHtml = try NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding) 
    webView.loadHTMLString(fileHtml as String, baseURL: nil) 
} 
catch { 

} 
0

Apple d ocumentation đề xuất sử dụng loadHTMLString:baseURL::

Sử dụng tảiHTMLString: baseURL: phương pháp để bắt đầu tải tệp HTML cục bộ hoặc phương thức loadRequest: để bắt đầu tải nội dung web. Sử dụng phương pháp stopLoading để dừng tải và thuộc tính tải để tìm hiểu xem một lượt xem web có đang tải không.

Các tài liệu loadHTMLString:baseURL: cung cấp lý luận thêm:

Để giúp bạn tránh bị dễ bị tấn công an ninh, hãy chắc chắn để sử dụng phương pháp này để tải các tập tin HTML địa phương; không sử dụng loadRequest :.

một này có thể giúp: https://stackoverflow.com/a/29741277

0
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"privacy-Policy" ofType:@"html" inDirectory:nil]; 
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile]; 
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]]; 
Các vấn đề liên quan