iOS WebView你需要的问题答案

一、UIWebView 可以加载和显示某个URL的网页,也可以显示基于HTML的本地网页或部分网页:

a. 加载 URL

  1. WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)];
  2. NSString *path = @"http://www.baidu.com";
  3. NSURL *url = [NSURL URLWithString:path];
  4. [WebView loadRequest:[NSURLRequest requestWithURL:url]];

b. 加载 HTML

NSBundle *bundle = [NSBundle mainBundle];
NSString *resPath = [bundle resourcePath];
NSString *filePath = [resPath
stringByAppendingPathComponent:@"Home.html"];
[webView loadHTMLString:[NSString
stringWithContentsOfFile:filePath]
  baseURL:[NSURL
fileURLWithPath:[bundle bundlePath]]];

二、使用网页加载指示,加载完成后再显示网页出来

首先要指定委托方法:

webView.delegate =self;

UIWebView主要有下面几个委托方法:

1、-
(void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行该方法。
      2、-
(void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行该方法。
      3、-
(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError
*)error;加载出错的时候执行该方法。

这样,可以利用
webViewDidStartLoad 和 webViewDidFinishLoad 方法实现本功能:

  1. - (void) webViewDidStartLoad:(UIWebView *)webView
  2. {
  3. //创建UIActivityIndicatorView背底半透明View
  4. UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
  5. [view setTag:108];
  6. [view setBackgroundColor:[UIColor blackColor]];
  7. [view setAlpha:0.5];
  8. [self.view addSubview:view];
  9. activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
  10. [activityIndicator setCenter:view.center];
  11. [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
  12. [view addSubview:activityIndicator];
  13. [activityIndicator startAnimating];
  14. }
  15. - (void) webViewDidFinishLoad:(UIWebView *)webView
  16. {
  17. [activityIndicator stopAnimating];
  18. UIView *view = (UIView*)[self.view viewWithTag:108];
  19. [view removeFromSuperview];
  20. NSLog(@"webViewDidFinishLoad");
  21. }

三、UIWebView还可以通过 stringByEvaluatingJavaScriptFromString
函数来执行 javascript代码,从而可以更加灵活地处理网页文件

1. 获得UIWebView的标题
NSString *theTitle=[webView
stringByEvaluatingJavaScriptFromString:@"document.title"];

2. 获取页面的URL

NSString
*currentURL = [webView
stringByEvaluatingJavaScriptFromString:@"document.location.href"];

3.
修改页面元素的值

NSString
*js_result = [webView
stringByEvaluatingJavaScriptFromString:@"document.getElementsByName(‘q‘)[0].value=‘朱祁林‘;"];

4.
表单提交

NSString
*js_result2 = [webView
stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit();
"]

四、综合运用以上方法,还可以实现部分网页的显示,基本思路如下:

1.
用 loadRequest 先获取网页,但先设置 UIWebView.hidden = YES;

2.
在 webViewDidFinishLoad 中,用

NSString
*js_result2 = [webView
stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_x_x_xx_x_x(‘xxxx‘).innerHTML;
"] 获取指定标签元素的HTML代码

3.
再使用 loadHTMLString 加载该HTML代码,即可

时间: 2024-11-05 15:30:45

iOS WebView你需要的问题答案的相关文章

IOS Webview JS交互之事件拦截获取

最近项目中用到了webvVew,webView加载的网页中有两个按钮,要在app里面响应这两个按钮的点击事件,并接受JS传过来的参数. ios7 的时候,出来了一个新的类库叫JavaScriptCore.framework - (void)setupJsContent { //获取当前JS环境 _content = [_webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; // 打印异

iOS面试笔试题附部分答案

面试反正看面试官水平和心情,我遇到的比较怪的问题还有"你觉得你是个有爱的人吗?"哈哈哈哈...只能说整理些下面是自己整理的,答案不一定对,哪里错了望不吝指正. iOS面试题集锦 至少10款以上iOS领域的开源组件: AFNetworking (NSURLConnction+NSOperation), Masonry,SDWebImage,MBProgreeHUD,MJRefresh,MWPhotoBrowser ,JSONKit http://www.jianshu.com/p/207

ios webview禁止自动识别日期

http://www.oschina.net/question/214196_226763 如题,ios中webview的网页中的诸如 “3月1号 或 0:00” 等日期字眼会被自动识别为日期,导致样式错误,怎么禁止? 解决办法:   用<a>标签包裹一下.

iOS WebView 加载本地资源(图片,文件等)

NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.docx" ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path]; NSLog(@"%@", [self mimeType:url]); //webview加载本地文件,可以使用加载数据的方式 //第一个诶参数是一个NSData, 本地文件对应的数据 //第二个参数是MIMEType //第

iOS webview注入JS

- (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *js = @"function imgAutoFit() { var imgs = document.getElementsByTagName('img'); for (var i = 0; i < imgs.length; ++i) { var img = imgs[i]; img.style.maxWidth = %f; } }"; js = [NSSt

iOS WebView的用法

一.UIWebView 可以加载和显示某个URL的网页,也可以显示基于HTML的本地网页或部分网页: a. 加载 URL WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)]; NSString *path = @"http://www.baidu.com"; NSURL *url = [NSURL URLWithString:path]; [WebView loadRequest:[NSURLR

ios webview自适应实际内容高度4种方法

//第一种方法 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat webViewHeight=[webView.scrollView contentSize].height; CGRect newFrame = webView.frame; newFrame.size.height = webViewHeight; webView.frame = newFrame; _webTablewView.contentSize = C

ios: WebView内高亮搜索

由于webview 加载的是网页 只能用js 进行页内查找  废话不说上代码 // 注入 JS 查找 NSString *resPath = [[NSBundle mainBundle] resourcePath]; static NSString *jsQuery = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ jsQuery = [NSString stringWithContentsOfFile:[

IOS webview部分选中链接中的文字

这是我本周遇到遇到的最奇葩的问题,没有之一. 先放一张成功之后的效果图: 一个图文混排的列表页,在需要选择部分文字进行copy的时候,IOS个二货每次都是直接选中了整个列表项,无论怎么操作它的选框都没有办法做到部分选中. 仔细思考并试验之后,找到了两个解决方案:一.把需要选中的文字放进input[text],然后用oninput屏蔽掉input的输入:二.分析html/css研究下ios为啥总是傻傻分不清楚,只能整块整块的选中: 方案一,完美实现长按选中,部分复制.but,会不可避免的弹出系统的