WKWebView implementation using Swift's Observation framework.
letmanager:ObservableWebViewManagerObservableWebView(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 inprint("Message: \(message.body)")}manager.js("document.title")With completion:
manager.js("document.title"){ result, error iniflet error = error {print("JavaScript execution failed: \(error)")}elseiflet result = result {print("JavaScript execution result: \(result)")}}