要在WebView中从JavaScript到Cocoa应用程序接收alert()动作,您可以使用WKWebView的navigationDelegate。以下是一个简单的示例,说明如何实现这一点:
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.navigationDelegate = self
view.addSubview(webView)
}
}
webView(_:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:)
委托方法,该方法将在JavaScript调用alert()
时触发:func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
let alertController = UIAlertController(title: "Alert", message: message, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in
completionHandler()
}))
present(alertController, animated: true, completion: nil)
}
现在,每当WebView中的JavaScript代码调用alert()
时,都会弹出一个带有消息的警告框。当用户点击“OK”按钮时,completionHandler将被调用,并且JavaScript代码将继续执行。
请注意,这个示例仅适用于WKWebView,如果您使用的是UIWebView,您需要使用其他方法来实现类似的功能。
领取专属 10元无门槛券
手把手带您无忧上云