我想在UiWebView中显示网站,但我不需要显示所有网站,但只能从<section id="xxx">
到</section>
显示CSS样式的可选<head>
。我试着下载html代码并将其粘贴到UiWebView
NSString *string = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://example.com/page"] encoding:NSUTF8StringEncoding error:nil];
NSString* content2 = string;
NSString* beforeBody = @"<section id=";
NSString* afterBody = @"</section>";
NSString* finalContent = [[beforeBody stringByAppendingString:content2]
stringByAppendingString: afterBody];
[_webView loadHTMLString:finalContent baseURL:nil];
但它对我没用。有任何想法吗?谢谢你的帮助!
答案 0 :(得分:0)
您可以执行以下操作:
在viewController,webView和webView2中创建2个UIWebViews,在viewController标题中实现@interface ViewController : UIViewController <UIWebViewDelegate>
。
在viewDidAppear中,您将从您想要使用的页面加载fullHTMLString到webView2中,然后像这样设置webView2的委托:
-(void)viewDidAppear:(BOOL)animated
{
NSString *fullHTMLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://python.org"] encoding:NSASCIIStringEncoding error:nil];
[self.webView2 setHidden:YES];
[self.webView2 loadHTMLString:fullHTMLString baseURL:nil];
[self.webView2 setDelegate: self];
}
您必须实现webViewDidFinishLoad委托方法,并在其中调用[stringByEvaluatingJavaScriptFromString]
,它将根据您提供的参数检索所需的单个元素。
在此示例中,我选择通过ElementID检索它,您可以使用javascript以其他方式检索它。
一旦你想要显示你想要的元素,你就创建一个HTML字符串并将其插入其中,之后你将带有单个元素的完整html加载到第一个webView(webView而不是webView2)中,这是为了防止无休止的在调用委托方法时循环。
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *singleElementString = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"mainnav\").innerHTML;"];
NSString *html = [[NSString alloc] initWithFormat:@"<html>%@</html>", singleElementString];
[self.webView loadHTMLString:html baseURL:nil];
}