【发布时间】:2018-05-30 19:31:45
【问题描述】:
我正在创建一个hybrid app 并尝试将一些数据从 WebView 传递到本机应用程序。
我能想到的最佳方法是使用URL variables,然后在 Swift 中为 URL 添加一个侦听器以获取新数据。
当 WebView 首次加载此 Swift 代码时,我能够从它获取 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 Navigation的代理,实现方法
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {,检查导航类型和请求url
标签: javascript ios swift xcode url