WKWebView implementation using Swift's Observation framework.
let manager: ObservableWebViewManager
ObservableWebView(manager: manager)
.onChange(of: manager.urlString) { ... }
ObservableWebView(manager: manager)
.onChange(of: manager.progress) {
updateLoadingBar(withProgress: manager.progress)
}
ObservableWebView(manager: manager)
.onChange(of: manager.loadState) {
switch state {
case .idle:
print("WebView is idle.")
case .isLoading:
print("WebView is loading.")
case .isFinished:
print("WebView has finished loading.")
case .error(let error):
print("WebView encountered an error: \(error.localizedDescription)")
}
}
ObservableWebView(manager: manager)
.scriptMessageHandler("messageFromJS", manager: manager) { message in
print("Message: \(message.body)")
}
manager.js("document.title")
With completion:
manager.js("document.title") { result, error in
if let error = error {
print("JavaScript execution failed: \(error)")
} else if let result = result {
print("JavaScript execution result: \(result)")
}
}