您的位置:首页 > 移动开发

WKWebView捕获HTML弹出的Alert和Confirm

2016-02-16 22:44 961 查看
为了响应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);
}


这下就好了…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: