'evaluateJavaScript never called in webview in swiftui

I am trying to call a function in my javascript file using evaluateJavaScript from webkit in swiftui. But it seems that that function is never called and it throws error:

Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=ReferenceError: Can't find variable: retrieveChartData, WKJavaScriptExceptionColumnNumber=18, WKJavaScriptExceptionSourceURL=undefined, NSLocalizedDescription=A JavaScript exception occurred}

My code is :

import SwiftUI
import WebKit
 
struct WebView: UIViewRepresentable {

    var url: URL
    var ticker: String

    func makeCoordinator() -> WebView.Coordinator {
        Coordinator(self)
    }

    func makeUIView(context: Context) -> WKWebView {
        let view = WKWebView()
        view.navigationDelegate = context.coordinator
        return view
    }

    func updateUIView(_ uiView: WKWebView, context: Context) {
        print("send ticker \(ticker)")
        uiView.evaluateJavaScript("retrieveChartData(\(ticker))") { result, error in
            guard error == nil else {
                print(error!)
                return
            }
        }
        print("loading")
        uiView.load(URLRequest(url: url))
    }


    class Coordinator: NSObject, WKNavigationDelegate {
        let parent: WebView

        init(_ parent: WebView) {
            self.parent = parent
        }

    }
    
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("send ticker \(ticker)")
        webView.evaluateJavaScript("retrieveChartData(\(ticker))") { result, error in
            guard error == nil else {
                print(error!)
                return
            }
        }
    }
}

Any suggestion?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source