我有一个UIWebView,想要显示页面标题。我用这段代码做了:
func webViewDidFinishLoad(aWebView: UIWebView) {
titleLabel?.text = aWebView.stringByEvaluatingJavaScriptFromString("document.title")!
}
这适用于大多数页面,但有些页面没有显示标题。例如http://stackoverflow.com/users
。当我在浏览器中打开此页面时,会显示标题,但不会出现在我的模拟器中。
答案 0 :(得分:2)
也许您在某些页面上由于重定向等而发生了嵌套加载。尝试跟踪加载和完成,以便您知道最后一个已完成。
请求页面加载时将计数器设置为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--;
}