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


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容