我正在开发一个应用程序,我使用加载网址的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中添加此代码,则它不会执行,因为元素尚未加载。
提前致谢
答案 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添加到项目中,将其添加到项目中。