当我导航到产品页面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移动网站。