将JavaScript注入SwiftUI WebKit

问题描述

如何将SwiftUI WebKit视图的文本大小设置为@State变量?我有这段代码,可以在SwiftUI中使用WebViews

import SwiftUI
import WebKit

struct WebView : UIViewRepresentable {

   var url : URL;

   func makeUIView(context: Context) -> WKWebView {
       return WKWebView();
   }

   func updateUIView(_ uiView: UIViewType,context: Context) {
       uiView.loadFileURL(url,allowingReadAccessto: url)
   }
}

我看到了this,并试图复制它,

    class Coordinator : NSObject {
        func webView(_ webView: WKWebView,js : String) {
            webView.evaluateJavaScript(js)
        }
    }

但是我无法使其正常工作。

谢谢。

解决方法

加载完成后,您可以尝试在导航委托中执行此操作,如下所示:

class Coordinator : NSObject,WKNavigationDelegate {
    // ... any other code

    func webView(_ webView: WKWebView,didFinish navigation: WKNavigation!) {
        webView.evaluateJavaScript(js,completionHandler: { (value,error) in
             // .. do anything needed with result,if any
        })
    }
}

struct WebView : UIViewRepresentable {

   var url : URL;

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

    func makeCoordinator() -> Coordinator {
        Coordinator()
    }

   func updateUIView(_ uiView: UIViewType,context: Context) {
       uiView.loadFileURL(url,allowingReadAccessTo: url)
   }
}