Objective-C UIWebview JS 交互

来源:互联网 发布:秋冬日系男装搭配 知乎 编辑:程序博客网 时间:2024/06/05 20:58
一、在OC中调用网页中的 js 方法。
  • Objective-C 代码

[self.webView stringByEvaluatingJavaScriptFromString:@"alertMessage('弹窗')"];
  • 网页 JS 中方法

function alertMessage(message) {    alert(message);}

 二、网页超链接调用Objective-C中的方法

1.设置webView的代理<UIWebViewDelegate>
2.实现代理方法shouldStartLoadWithRequest:(该方法当url加载的时候会自动执行)
  • 网页代码

<a href="client://addImg/headImg">点我调用OC方法</a>
  • Objective-C 核心代码

#pragma mark UIWebViewDelegate 方法- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {    // 可以直接拿到发送请求的网址    NSString *urlStr = request.URL.absoluteString;        if ([urlStr hasPrefix:@"client://"]) { // 判断请求是不是以 client:// 开头                //获得去除请求头的 url 路径        NSString *urlContent = [urlStr substringFromIndex:[@"client://" length]];                //用 / 来拆分字符串        NSArray *urls = [urlContent componentsSeparatedByString:@"/"];                NSString *funName = [NSString stringWithFormat:@"%@:", urls[0]]; // 从url获取方法名,带参数的方法,加冒号                SEL callFun = NSSelectorFromString(funName);                //取消警告        # pragma clang diagnostic push        # pragma clang diagnostic ignored "-Warc-performSelector-leaks"                [self performSelector:callFun withObject:urls[1]]; // 调用 OC 中的方法,并且传递参数                return NO;      }        return YES;}#pragma mark 此方法通过网页调用-(void)addImg:(NSString *) headImg {    NSLog(@"通过网页调用OC方法:%@",headImg);}

三、Objective-C 注入JS到网页

  • Objective-C 核心代码

- (void)jsClick {      [self.webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"       "script.type = 'text/javascript';"       "script.text = \"function myFunction() { "   //定义myFunction方法       "var field = document.getElementsByName('word')[0];"       "field.value='WWDC2014';"       "document.forms[0].submit();"       "}\";"       "document.getElementsByTagName('head')[0].appendChild(script);"];  //添加到head标签中        [self.webView stringByEvaluatingJavaScriptFromString:@"myFunction();"];  }

 

0 0
原创粉丝点击