UIWebView注入隐藏webViewDidStartLoad中的导航栏

时间:2012-03-18 05:11:42

标签: ios cocoa uiwebview

我正在开发一个应用程序,我使用加载网址的UIWebView。我想隐藏导航栏(这是第一个div),所以我实现了以下工作正常:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
// finished loading, hide the activity indicator in the status bar
[self activityIndicatorAnimate:NO];
[self.browser stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"  
 "script.type = 'text/javascript';"  
 "script.text = \"function myFunction() { "
 "var b=document.getElementsByTagName('div')[0];b.style.visibility='hidden';"
 "}\";"  
 "document.getElementsByTagName('head')[0].appendChild(script);"];  
[self.browser stringByEvaluatingJavaScriptFromString:@"myFunction();"];

NSLog(@"%@", [webView stringByEvaluatingJavaScriptFromString: @"document.all[0].innerHTML"]);

}

事实是,当文档加载时会执行此操作,并且因为下载URL需要时间,导航栏在加载时仍然可见。无论如何我可以让它从头开始隐藏导航栏吗?

注意:如果我在webViewDidStartLoad中添加此代码,则它不会执行,因为元素尚未加载。

提前致谢

1 个答案:

答案 0 :(得分:1)

我不知道如何在内容加载之前隐藏它,但我正在考虑另一种 - 你可以只将一个本地html加载到webview,然后使用ajax加载页面,在响应中ajax,用html做一些事情,然后在你的webview中显示它。要将本地文件加载到webview,请检查以下代码 -

NSString *html = [NSString alloc];

html = @"index.htm";
NSBundle *bundle = [NSBundle mainBundle]; 
NSString *path = [bundle bundlePath];

NSString *fullPath = [NSBundle pathForResource:html ofType:nil inDirectory:path];

NSURL *url = [NSURL fileURLWithPath:fullPath];
url = [url URLByDeletingLastPathComponent];

url = [NSURL URLWithString:@"index.htm?page=1" relativeToURL:url];
NSURLRequest *request = [NSURLRequest requestWithURL:url];


[self.mHtmlViewer loadRequest:request];

请记住将html添加到项目中,将其添加到项目中。