Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to send a hash tag to a file url in UIWebView?

I want to load a html page from a file, and append a hash tag to it. Is this possible?

I have tried

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"someFile" ofType:@"html"];  
NSURL *fileUrl = [NSURL fileURLWithPath:[filePath stringByAppendingFormat:@"#hashtag"]];
[self.webView loadRequest:[NSURLRequest requestWithURL:fileUrl]];    
NSLog(@"fileUrl = %@, reachable? %d", fileUrl, [fileUrl checkResourceIsReachableAndReturnError:nil]);

but this tries to look for the file someFile.html%23hashtag, which can't be found. Is there a way to add the hash after the NSURL object is created?

I've also tried loading the file into a string and using loadHTMLString:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"someFile" ofType:@"html"];
NSString *fileContents = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[self.webView loadHTMLString:fileContents baseURL:[NSURL URLWithString:@"http://someFile.html#hashtag"]];

Here the hash tag does work, but my javascript references inside the html don't work. A follow on question from this approach would be, how do I reference javascript files from html loaded in as a string in a UIWebView, ie, what is the base url?

A hack I can think of is to just put all my javascript files inline in the html and load it as a string, but I'm thinking there must be a better way!

like image 395
zlog Avatar asked May 25 '11 16:05

zlog


1 Answers

I've not tried this but how about loading the file normally without the hashtag and implementing the UIWebViewDelegate with something like this?

- (void)webViewDidFinishLoad:(UIWebView *)webView {
   [webView stringByEvaluatingJavaScriptFromString:@"window.location.href = '#hashtag';"];
}

References:

  • UIView that takes you to anchor link
  • Programmatically scroll to an Anchor Tag
like image 84
John Lemberger Avatar answered Sep 28 '22 06:09

John Lemberger