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内容的时候了,这就是完成这个过程的最好例子。
重要提示:这个答案不再适用!
可读性于2016年9月30日closures。
以下是他们推荐的替代品: https : //mercury.postlight.com/web-parser/
保持答案作为历史参考
—原文答案—
你可以使用Readability mobilizer。 您将在Readability样式中获得任何文章的清理版本:
http://www.readability.com/m?url=http://{URLOFTHEARTICLE}
只需准备好URL并将其加载到UIWebView中即可。 以下是它的实际情况:
苹果在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];