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];