load local HTML file when link is clicked in WebView

…衆ロ難τιáo~ 提交于 2019-12-30 12:54:05

问题


I have a WebView that loads a local HTML file like this:

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"html"]isDirectory:NO]]];

What I want is to click a link in the test1 local HTML file and then for the webView to load the test2 local HTML file.

How can I do this?


回答1:


Like in a regular webpage. Let the link in test 1 point to test2.




回答2:


Instead of loading a request, use the - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL method.

Create an NSString from the local HTML file like this:

NSError *error = nil;
NSString *html = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"html"] encoding:NSUTF8StringEncoding error:&error];

Then load it into the webview, like this:

[webview loadHTMLString:html baseURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"html"]]];

Then in your HTML file when you link to other pages, just use their filename, like <a href="test2.html">Test 2</a> and it would load the page in the same webview without any issues.




回答3:


- (void)viewDidLoad {
    [super viewDidLoad];
    [webview loadHTMLString:[self htmlString] baseURL:[self baseURL]];
}
- (NSURL *)baseURL{
    NSString *htmlpath = [[NSBundle mainBundle] pathForResource:@"webpage" ofType:@"html"];
    return [[[NSURL alloc] initFileURLWithPath:htmlpath] autorelease];
}

- (NSString *)htmlString{
    NSError *error = nil;
    NSString *html = [[[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"webpage" ofType:@"html"] 
                                                     encoding:NSUTF8StringEncoding 
                                                        error:&error] autorelease];
    return html;
}


来源:https://stackoverflow.com/questions/4214906/load-local-html-file-when-link-is-clicked-in-webview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!