WKWebView 是苹果在 iOS 8 及以后版本中引入的一个用于在应用内显示网页内容的组件。它是 WebKit 框架的一部分,提供了比旧的 UIWebView 更好的性能和更多的功能。WKWebView 调用 JavaScript 的能力是通过 JavaScriptCore 框架实现的,它允许 Objective-C 或 Swift 代码与网页中的 JavaScript 代码进行交互。
WKWebView 调用 JavaScript 主要通过以下几个概念实现:
window.webkit.messageHandlers.<name>.postMessage()
发送消息到原生应用。以下是一个 Swift 示例,展示了如何在 WKWebView 中调用 JavaScript 函数:
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let config = WKWebViewConfiguration()
webView = WKWebView(frame: view.bounds, configuration: config)
webView.navigationDelegate = self
view.addSubview(webView)
if let url = URL(string: "https://example.com") {
let request = URLRequest(url: url)
webView.load(request)
}
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
// 调用 JavaScript 函数
let jsString = "alert('Hello from Swift!')"
webView.evaluateJavaScript(jsString, completionHandler: { (result, error) in
if let error = error {
print("Error executing JavaScript: \(error)")
} else {
print("JavaScript executed successfully")
}
})
}
}
问题:调用 JavaScript 时没有反应或者出现错误。
原因:
解决方法:
webView(_:didFinish:)
或其他合适的生命周期方法中调用 JavaScript。通过以上方法,可以有效地调用 JavaScript 并处理可能出现的问题。
领取专属 10元无门槛券
手把手带您无忧上云