js、oc相互调用的核心

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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容