Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Swift 3检测WKWebView何时完成加载AJAX站点_Javascript_Ajax_Swift_Webview_Wkwebview - Fatal编程技术网

Javascript Swift 3检测WKWebView何时完成加载AJAX站点

Javascript Swift 3检测WKWebView何时完成加载AJAX站点,javascript,ajax,swift,webview,wkwebview,Javascript,Ajax,Swift,Webview,Wkwebview,当导航到产品页面URL时,我试图将一些javascript注入到我的web视图中。该网站在导航到不同页面时不会重新加载,因此据我所知,这意味着它使用的是Ajax。 问题是我需要完全加载页面,因为我使用的javascript的目的是自动选择大小下拉列表 我尝试使用,但由于它没有在页面之间重新加载,所以只有在首次加载web视图时才会调用它 我所做的是设置和观察 webView.addObserver(self, forKeyPath: "URL", options: .new, context: n

当导航到产品页面
URL
时,我试图将一些
javascript
注入到我的
web视图中。该网站在导航到不同页面时不会重新加载,因此据我所知,这意味着它使用的是
Ajax。

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

我尝试使用,但由于它没有在页面之间重新加载,所以只有在首次加载web视图时才会调用它

我所做的是设置和观察

webView.addObserver(self, forKeyPath: "URL", options: .new, context: nil)
并检查当前URL是否是我希望通过

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更改时,它会被正确调用,但当页面完成加载时,它不会被正确调用。我已经通过添加延迟使其成功工作,但这不是一个好的解决方案,因为如果页面没有及时加载,它将无法工作。有没有办法知道这样一个页面何时加载完所有元素?我正在使用的网站是移动网站。

这可能会有所帮助这可能会有所帮助