如何获取在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现在适合。

链接地址: http://www.djcxy.com/p/34747.html

上一篇: How to Get the Title of a HTML Page Displayed in UIWebView?

下一篇: on success of jquery validation the page not redirect on specific location