[英]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.