如何获取在UIWebView中显示的HTML页面的标题?
我需要从显示在UIWebView中的HTML页面中提取标题标签的内容。 最强大的手段是什么?
我知道我可以这样做:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}
但是,只有在启用javascript的情况下才有效。
另外,我可以扫描标题的HTML代码的文本,但是如果页面的作者对他们的代码感到厌烦,那感觉有点麻烦,并且可能会变得脆弱。 如果说到这一点,在iPhone API中处理HTML文本的最佳方法是什么?
我觉得我已经忘记了一些明显的东西。 有没有比这两种选择更好的方法?
更新:
从这个问题的答案之后:UIWebView:你可以禁用Javascript? 似乎没有办法在UIWebView中关闭Javascript。 因此,上面的Javascript方法将始终有效。
对于那些只是向下滚动才能找到答案的人:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}
这将始终有效,因为无法关闭UIWebView中的Javascript。
如果启用Javascript使用此: -
NSString *theTitle=[webViewstringByEvaluatingJavaScriptFromString:@"document.title"];
如果JavaScript禁用使用此: -
NSString * htmlCode = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.appcoda.com"] encoding:NSASCIIStringEncoding error:nil];
NSString * start = @"<title>";
NSRange range1 = [htmlCode rangeOfString:start];
NSString * end = @"</title>";
NSRange range2 = [htmlCode rangeOfString:end];
NSString * subString = [htmlCode substringWithRange:NSMakeRange(range1.location + 7, range2.location - range1.location - 7)];
NSLog(@"substring is %@",subString);
我在NSMakeRange中使用了+7和-7来消除<title>
的长度,即7
WKWebView
有'标题'属性,就这样做,
func webView(_ wv: WKWebView, didFinish navigation: WKNavigation!) {
title = wv.title
}
我不认为UIWebView
现在适合。
上一篇: How to Get the Title of a HTML Page Displayed in UIWebView?
下一篇: on success of jquery validation the page not redirect on specific location