Ios 是否在UIWebView中获取页面标题?
我有一个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。当我在浏览器中打开此页面
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”)”