我有一个UIWebView,想要显示页面标题.我用这段代码做了:
func webViewDidFinishLoad(aWebView: UIWebView) {
titleLabel?.text = aWebView.stringByEvaluatingJavaScriptFromString("document.title")!
}
这适用于大多数页面,但有一些页面没有显示标题.例如https://stackoverflow.com/users.当我在浏览器中打开此页面时,会显示标题但不会在我的模拟器中显示.
最佳答案 也许您在某些页面上由于重定向等而发生了嵌套加载.尝试跟踪加载和完成,以便您知道最后一个已完成.
请求页面加载时将计数器设置为0.页面加载开始时递增此值,页面加载完成或失败时递减.
当计数器变为0时,运行您的javascript.
请原谅我,但有点像:
func webViewDidStartLoad(aWebView: UIWebView) {
self.webLoads++
}
func webViewDidFinishLoad(aWebView: UIWebView) {
self.webLoads--
if (webLoads == 0){
titleLabel?.text = aWebView.stringByEvaluatingJavaScriptFromString("document.title")!
}
}
func webView(webView: UIWebView!, didFailLoadWithError error: NSError!){
self.webLoads--;
}