繁体   English   中英

使用Swift检测WebView URL中的更改

[英]Detect change in WebView URL with Swift

我正在创建一个混合应用程序,并且试图将一些数据从WebView传递到本机应用程序。

我能想到的最好的方法是使用URL变量 ,然后在Swift中向URL添加一个侦听器以获取新数据。

第一次使用此Swift代码加载时,我能够从WebView中获取URL变量...

func webViewDidFinishLoad(_ webView: UIWebView) {

   print(getQueryStringParameter(url: (webView.request?.url?.absoluteString)!, param: "id"));

}
func getQueryStringParameter(url: String, param: String) -> String? {
    guard let url = URLComponents(string: url) else { return nil }
    return url.queryItems?.first(where: { $0.name == param })?.value
}


这很好用,但是我似乎找不到WebView侦听器来检测何时在页面加载后稍后通过JS添加新的URL变量。 这是JS ...

window.history.replaceState(null, null, "?id=mydata");

有什么想法如何在Swift中收听吗? 还是有更好的方法将数据从Web视图传递到本机应用程序?

您可以完成所需的代码。

您需要使用WKWebView并实现相应的委托。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("finish to load")
        if webView.url!.absoluteString.range(of: "ADD_STRING_TO_BE_CHECKED_HERE") != nil
        {
            print("Success")

            //DO WHAT YOU NEED HERE
        }
    }

希望这可以帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM