2011-11-02 27 views
6

Tôi gặp sự cố với UIWebView. Tôi muốn hiển thị mã html của riêng mình trong UIWebView.loadHTMLString baseURL: không hoạt động trong iOS5

nếu tôi sử dụng mã bên dưới, nó hoạt động tốt.

NSBundle *thisBundle = [NSBundle mainBundle]; 
    NSString *path = [thisBundle pathForResource:@"foo" ofType:@"html"]; 
    NSURL *baseURL = [NSURL fileURLWithPath:path]; 
    [self.webView loadHTMLString:@"foo.html" baseURL:baseURL]; 

Tôi muốn hiển thị html bằng mã bên dưới. Nhưng nó không hoạt động. foo.html chứa chính xác cùng một nội dung với NSString *. Bất kỳ gợi ý nào? Cảm ơn trước. =)

NSString* one = @"<html><head><title></title></head><body><img src=\"image.jpg\"/></body></html>"; 
    [self.webView loadHTMLString:one baseURL:nil] ; 

Trả lời

23

tôi sử dụng mã này hoạt động hoàn hảo:

NSString* htmlContent = @"<html><head><title></title></head><body><img src='image.jpg' /></body></html>"; 
[self.webView loadHTMLString:htmlContent baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 

Bu chắn rằng image.jpg được đưa vào dự án của bạn.

+0

Xin chào, tôi không muốn đọc tệp html cục bộ. Tôi muốn sử dụng trực tiếp như thế này. NSString * one = @ ""; – moon

+0

@moon: vâng, xin lỗi, chỉ cần thay thế htmlContent bằng HTML của bạn. Đó là khi tôi viết mã này. Tôi chỉnh sửa câu trả lời của mình. – Oliver

+0

Xin chào Oliver, vâng, nó hoạt động. Cảm ơn rất nhiều. :) – moon

1

tạo file JS demo.js và thêm mã

var hello = function(str){       return str; };

thêm UIWebView => Để nhúng Javascript trong một file html giả và tải đó vào UIWebView

[self.webView loadHTMLString:@"<script src=\"demo.js\"></script>"               baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];

Đây là mã để thực hiện JS gọi

NString *[email protected]"hi JavaScript"; 
NSString *function = [[NSString alloc] initWithFormat: @"hello(%@)", str]; 
NSString *result = [webView stringByEvaluatingJavaScriptFromString:function]; 

Bây giờ, có một mẹo an toàn quan trọng để thực hiện điều này thực sự hiệu quả: UIWebView phải thực sự được tải chế độ xem. Nó không cần phải nhìn thấy được, nhưng để cho công cụ WebKit thực thi JS, nó phải nằm trên một khung nhìn.

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