bridgemethodName:js和oc橋接的方法,是兩個(gè)溝通的橋梁瓜晤,方法名在js和oc是一致的。
js_methodName:js的方法 饼煞,para:參數(shù)
(這篇文章只有我自己看得懂o(╯□╰)o 就是做個(gè)簡短的筆記)
在html的里面的script:
function js_methodName(para){
? ? ? window.webkit.messageHandlers.bridgemethodName.postMessage(para)
}
就是這么簡單:window.webkit.messageHandlers.bridgemethodName.postMessage(para)
在oc源葫,用wkwebview,uiwebview還是丟了吧...
遵循協(xié)議 <WKScriptMessageHandler>
WKWebViewConfiguration *config = [[WKWebViewConfigurationalloc] init];
...
WKUserContentController *userController=config.userContentController;
[userController addScriptMessageHandler:self name:@"bridgemethodName"];//理解成類似添加監(jiān)聽
這樣調(diào)用js中的js_methodName方法時(shí)觸發(fā)bridgemethodName砖瞧,iOS接收到bridgemethodName就會(huì)進(jìn)行回調(diào)
- (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message{
//message 含有屬性分別對(duì)應(yīng) name:bridgemethodName? body:para
}
oc調(diào)用js:直接進(jìn)行js注入即可....
[self.wkwebView evaluateJavaScript:@"js_methodName(para)" completionHandler:nil];