为了响应html的alert和confirm事件,需要添加WKWebView的代理方法,如下:
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler {
LILog(@"runJavaScriptAlertPanelWithMessage");
[LIUseFunc alertWithMessage:message];
}
- (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL))completionHandler {
LILog(@"runJavaScriptConfirmPanelWithMessage");
}
但是程序上面的程序就出出现如下错误:
runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:] was not called
出现这个程序之后就崩掉了,因为completionHandler这个block需要执行才行,所以我们需要写成类似如下:
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler {
LILog(@"runJavaScriptAlertPanelWithMessage");
[LIUseFunc alertWithMessage:message];
completionHandler();
}
- (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL))completionHandler {
LILog(@"runJavaScriptConfirmPanelWithMessage");
completionHandler(NO);
}
这下就好了…