iOS通过UIWebView访问Safari Readerfunction

我正在使用iOS 4.3,并想知道是否有任何方法可以访问Safari浏览器的“阅读器”function,通过该function ,网页上的广告和其他即兴表演内容占据了中心舞台。

如果在Safari中打开任何文章(比如说Wikipedia网站),那么在URL栏上会出现一个“Reader”button。 点击它呈现一个新的窗口,呈现美丽的内容。

如何通过UIWebView在iOS中利用这个function?

在这里输入图像说明

PS:我知道有一个叫Readability Project的东西。 但是我不知道如何通过UIWebView来使用它。 另外对于一些网站的Safari阅读器打个电话不启用“阅读器”function,也许它没有足够的信心?

其实阅读器button在parsingHTML页面的地方做了一些分析,然后看到一个清晰的身体标记来parsing。 如果该插件能够提取确切的身体,将启用阅读器button(我从可读性源代码的理解)。 现在要为webview实现相同的function,只需要在代码中embeddedjava脚本(这个java脚本已经存在于可读性源代码中),然后就可以达到同样的效果。

但我怀疑苹果的未来计划是一样的。 因为他们不能让任何人以与iCloud相关的巨大商业机会与可读性相结合的方式来提取内容。

如果你想要的话,你可以简单地从UIWebView提取HTML,然后提取正文,并将其用于您的目的。 这不是一个非常火箭科学提取。

从分析的angular度来看,只有随机select了10个HTML页面并且启用了Readerbutton,您将会看到核心属性只属于body,其余的add,header,footer是分开的。

我相信现在是重新发明我们使用的networking内容的时候了,这就是完成这个过程的最好例子。

重要提示:这个答案不再适用!

可读性于20169月30日closures。

以下是他们推荐的替代品: https : //mercury.postlight.com/web-parser/

保持答案作为历史参考

—原文答案—

你可以使用Readability mobilizer。 您将在Readability样式中获得任何文章的清理版本:

 http://www.readability.com/m?url=http://{URLOFTHEARTICLE} 

只需准备好URL并将其加载到UIWebView中即可。 以下是它的实际情况:

http://www.readability.com/m?url=http%3A%2F%2Fwww.cnn.com%2F2013%2F01%2F11%2Fshowbiz%2Ftv%2Fgolden-globes-tv-vineyard%2Findex.html%3Fhpt% 3Dhp_abar

苹果在iOS 5中join了“Reader”,这是一个非常重要的事情。我假设它在4.3中不可用

重新: 如何通过UIWebView使用

  • 在“ Web内容指南”中我找不到任何提及的内容 。
  • 在UIWebView类参考中没有任何关于它的内容。
  • QA1630没有任何东西 。

不要在iOS上本地parsingHTML,我已经做到了,而且它是一个混乱的业务。 要么创build自己的Web服务来完成所有讨厌的工作,要么考虑使用可读性(readability.com)来提供API。 还有一个开源的ruby,python和php的可读性端口,你可以在这里find

https://github.com/iterationlabs/ruby-readability

https://github.com/gfxmonk/python-readability

http://code.fivefilters.org/p/php-readability/source/tree/master/

对于你的ruby爱好者来说,可读性也可以作为一个gem,只是谷歌它。

你甚至可以通过注入JavaScript来做到这一点。

 #define readJS @"(function(){window.baseUrl='https://www.readability.com';window.readabilityToken='';var s=document.createElement('script');s.setAttribute('type','text/javascript');s.setAttribute('charset','UTF-8');s.setAttribute('src',baseUrl+'/bookmarklet/read.js');document.documentElement.appendChild(s);})()" 

然后当你的网页完成加载

 - (void)webViewDidFinishLoad:(UIWebView *)webview { [webview stringByEvaluatingJavaScriptFromString:readJS]; 

你可以在iOS9中完成。 先导入SafariServices:

 #import <SafariServices/SafariServices.h> 

之后,我们实例化SFSafariViewController并将其添加为子视图。 我们有两个select:

  • 仅使用基本URL创build
  • 使用bas URL创build,并在可用的情况下进入“阅读模式”
 NSString *sURL = @"http://google.com"; NSURL *URL = [NSURL URLWithString:sURL]; SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL]; // 1. SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL entersReaderIfAvailable:YES]; // 2. [self presentViewController:safari animated:YES completion:nil]; 
Interesting Posts