一、本地代碼所需操作
1、創建viewController並遵守協議
@interface ViewController ()<WKNavigationDelegate,WKScriptMessageHandler,WKUIDelegate>
2、注冊ScriptMessageHandler
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
[configuration.userContentController addScriptMessageHandler:self name:@"Redirect"]; self.secondWebView = [[[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration] autorelease];
3、實現WKScriptMessageHandler協議的代理方法
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { NSLog(@"message====%@",message); }
二、JavaScript代碼
1、用WKWebView加載h5頁面觸發js代碼如下
var message = native; window.webkit.messageHandlers.Redirect.postMessage(message)
三、執行js代碼之后,本地代理方法就會監聽到js傳過來的數據,控制台輸出
message====native
總結:
1、swift實現流程:http://www.cocoachina.com/swift/20150907/13356.html
2、本地注冊的ScriptMessageHandler與js里邊window.webkit.messageHandlers.后邊的名字要保持一致。
eg.
//這兩句代碼同為:Redirect [configuration.userContentController addScriptMessageHandler:self name:@"Redirect"]; window.webkit.messageHandlers.Redirect.postMessage(message)