Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.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
Ios 是否在UIWebView中获取页面标题?_Ios_Objective C_Swift - Fatal编程技术网

Ios 是否在UIWebView中获取页面标题?

Ios 是否在UIWebView中获取页面标题?,ios,objective-c,swift,Ios,Objective C,Swift,我有一个UIWebView,希望显示页面标题。我是用这个代码做的: func webViewDidFinishLoad(aWebView: UIWebView) { titleLabel?.text = aWebView.stringByEvaluatingJavaScriptFromString("document.title")! } 这对大多数页面都适用,但也有一些页面没有显示标题。例如http://stackoverflow.com/users。当我在浏览器中打开此页面

我有一个UIWebView,希望显示页面标题。我是用这个代码做的:

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

这对大多数页面都适用,但也有一些页面没有显示标题。例如
http://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--;
}

好的,所以这一定与页面内容有关。您可以尝试在主循环中运行javascript一次。尝试
dispatch\u async(dispatch\u get\u main\u queue()){titleLabel?.text=aWebView.stringByEvaluatingJavaScriptFromString(“document.title”)!}
您需要通过javascript进行一些调试,并打印出返回的内容,这样您就知道哪里出了问题。如果
document
document.title
为nil,我会将java脚本更改为始终返回一些内容。类似于
“(document?(document.title?document.title:'Untitled'):'No document')”
。在javascript行中输入一个断点并打印结果。还要检查您输入viewDidFinishLoading的次数。我无法更新javascript,因为它是我加载的第三方页面!我的意思是在
stringByEvaluatingJavaScriptFromString
调用中更改javascript代码,以便它返回更多信息。e、 g.
titleLabel?.text=aWebView.stringByEvaluatingJavaScriptFromString(((document?(document.title?(document.title==“空字符串”):document.title:“Untitled”):“No document”)”