初始化WKWebView,设置代理
wkWebView = WKWebView()
wkWebView.navigationDelegate = self
wkWebView.UIDelegate = self
view.addSubview(wkWebView!)
实现以下三个代理方法即可
//Alert弹框
func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void) {
let alert = UIAlertController(title: message, message: nil, preferredStyle: UIAlertControllerStyle.Alert)
let action = UIAlertAction(title: "好的", style: UIAlertActionStyle.Cancel) { (_) in
completionHandler()
}
alert.addAction(action)
presentViewController(alert, animated: true, completion: nil)
}
//confirm弹框
func webView(webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: (Bool) -> Void) {
let alert = UIAlertController(title: message, message: nil, preferredStyle: UIAlertControllerStyle.Alert)
let action = UIAlertAction(title: "确定", style: UIAlertActionStyle.Default) { (_) in
completionHandler(true)
}
let cancelAction = UIAlertAction(title: "取消", style: UIAlertActionStyle.Cancel) { (_) in
completionHandler(false)
}
alert.addAction(action)
alert.addAction(cancelAction)
presentViewController(alert, animated: true, completion: nil)
}
//TextInput弹框
func webView(webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: (String?) -> Void) {
let alert = UIAlertController(title: "", message: nil, preferredStyle: UIAlertControllerStyle.Alert)
alert.addTextFieldWithConfigurationHandler { (_) in}
let action = UIAlertAction(title: "确定", style: UIAlertActionStyle.Default) { (_) in
completionHandler(alert.textFields?.last?.text)
}
alert.addAction(action)
presentViewController(alert, animated: true, completion: nil)
}