在UIWebView中获取页面标题?

时间:2015-05-06 13:46:06

标签: ios objective-c swift

我有一个UIWebView,想要显示页面标题。我用这段代码做了:

  func webViewDidFinishLoad(aWebView: UIWebView) {
    titleLabel?.text = aWebView.stringByEvaluatingJavaScriptFromString("document.title")!
  }

这适用于大多数页面,但有些页面没有显示标题。例如http://stackoverflow.com/users。当我在浏览器中打开此页面时,会显示标题,但不会出现在我的模拟器中。

1 个答案:

答案 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--;
}