当WKWebView完成加载AJAX站点时,Swift 3检测到

时间:2017-08-29 04:14:20

标签: javascript ajax swift webview wkwebview

当我导航到产品页面javascript时,我试图将web view注入我的URL。导航到不同页面时网站不会重新加载,所以据我所知,这意味着它正在使用Ajax.

问题是我需要完全加载页面,因为我使用的javascript的目的是自动选择下拉大小。

我尝试使用navigation delegate,但由于它没有在页面之间重新加载,因此只有在首次加载Web视图时才会调用它。

我所做的是设置和观察者

webView.addObserver(self, forKeyPath: "URL", options: .new, context: nil)

并检查当前网址是否是我要通过

注入javascript的网址
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "URL" {
        guard var currentURL = webView.url?.absoluteString else { return }

        if currentURL.lowercased().range(of: "products") != nil {
           webView.evaluateJavaScript("document.getElementById('size-options').selectedIndex = 1")
        }
    }
}

这个问题是它在URL更改时被调用,而在页面完成加载时则调用。我已经通过添加延迟来成功地工作但这不是一个好的解决方案,因为如果页面没有及时加载它将无法工作。有没有办法知道这样的页面何时完成加载其所有元素?我正在使用的网站是http://www.supremenewyork.com/mobile/#categories移动网站。

0 个答案:

没有答案