-
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();"]; }