如何处理WKWebView的JavaScript交互?
时间: 2024-09-24 11:04:39 浏览: 19
在WKWebView中处理JavaScript交互,主要是通过注册`WKScriptMessageHandler`,并监听`WKWebView`发送的消息。下面是一个简单的示例,演示了如何响应来自JavaScript的`alert`消息:
```swift
class ViewController: UIViewController, WKScriptMessageHandler {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let config = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: config)
webView.add(self, as: WKScriptMessageHandler.self) // 注册处理程序
// 加载HTML内容,包含JavaScript脚本
let jsCode = """
window.webkit.messageHandlers.yourCallback.postMessage("Hello from JS!");
"""
let html = "<html><body><script>\(jsCode)</script></body></html>"
let request = URLRequest(url: URL(string: "data:text/html;charset=utf-8,\(html)")!)
webView.load(request)
// 设置处理函数,当接收到JavaScript的消息时会被调用
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "yourCallback" { // 检查消息名称是否匹配
print(message.body ?? "") // 显示接收到的内容
}
}
}
}
```
在这个例子中,你需要将`yourCallback`替换为你想要监听的实际回调名。
**相关问题--:**
1. 如何允许WKWebView执行用户输入的JavaScript代码?
2. 如何处理WKWebView的异步JavaScript结果?
3. 如何防止恶意JavaScript对WKWebView的安全影响?