页面要做的效果如下图
JS代码
<!DOCTYPE html>
<html>
<body>
<h1 id="id1">I'm Html </h1>
<button type="button" id = "id2" οnclick="clickMe({'name':'Leon'})"> Talk To iOS</button>
<script>
function changeTitle() {
document.getElementById('id1').innerText='I receive Your Message';// 修改标题
}
</script>
</body>
</html>
JS调用OC
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
if (!_jsContext) {
_jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
// 2. 关联打印异常
__weak ViewController *weakSelf = self;
_jsContext.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {
context.exception = exceptionValue;
NSLog(@"异常信息:%@", exceptionValue);
};
// js调用oc
_jsContext[@"clickMe"] = ^(NSDictionary *param) {
weakSelf.label.text = param[@"name"];
NSLog(@"%@", param);
};
id userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSLog(@"%@", userAgent);
}
}
OC调用JS
- (IBAction)callJSAction:(UIButton *)sender {
// changeTitle对应 js的changeTitle
JSValue *changeTitle = _jsContext[@"changeTitle"];
[changeTitle callWithArguments:nil];
}