bridgemethodName:js和oc桥接的方法,是两个沟通的桥梁,方法名在js和oc是一致的。
js_methodName:js的方法 ,para:参数
(这篇文章只有我自己看得懂o(╯□╰)o 就是做个简短的笔记)
在html的里面的script:
function js_methodName(para){
window.webkit.messageHandlers.bridgemethodName.postMessage(para)
}
就是这么简单:window.webkit.messageHandlers.bridgemethodName.postMessage(para)
在oc,用wkwebview,uiwebview还是丢了吧...
遵循协议 <WKScriptMessageHandler>
WKWebViewConfiguration *config = [[WKWebViewConfigurationalloc] init];
...
WKUserContentController *userController=config.userContentController;
[userController addScriptMessageHandler:self name:@"bridgemethodName"];//理解成类似添加监听
这样调用js中的js_methodName方法时触发bridgemethodName,iOS接收到bridgemethodName就会进行回调
- (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message{
//message 含有属性分别对应 name:bridgemethodName body:para
}
oc调用js:直接进行js注入即可....
[self.wkwebView evaluateJavaScript:@"js_methodName(para)" completionHandler:nil];