Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c iOS通过UIWebView访问Safari阅读器功能_Objective C_Ios_Uiwebview_Safari_Readability - Fatal编程技术网

Objective c iOS通过UIWebView访问Safari阅读器功能

Objective c iOS通过UIWebView访问Safari阅读器功能,objective-c,ios,uiwebview,safari,readability,Objective C,Ios,Uiwebview,Safari,Readability,我使用的是iOS 4.3,我想知道是否有什么方法可以让我访问网站,通过它可以删除网页上的广告和其他杂碎&内容占据了中心舞台 如果你在Safari(比如维基百科网站)上打开任何文章,那么URL栏上就会出现一个“阅读器”按钮。单击它将显示一个新窗口,漂亮地显示内容 如何通过UIWebView在iOS中利用此功能 附言:我知道有一种东西叫做。但是我不知道如何通过UIWebView使用它。另外,对于一些网站,Safari的Reader打电话不启用“Reader”功能,可能它没有足够的信心?苹果在iOS

我使用的是iOS 4.3,我想知道是否有什么方法可以让我访问网站,通过它可以删除网页上的广告和其他杂碎&内容占据了中心舞台

如果你在Safari(比如维基百科网站)上打开任何文章,那么URL栏上就会出现一个“阅读器”按钮。单击它将显示一个新窗口,漂亮地显示内容

如何通过
UIWebView
在iOS中利用此功能


附言:我知道有一种东西叫做。但是我不知道如何通过
UIWebView
使用它。另外,对于一些网站,Safari的Reader打电话不启用“Reader”功能,可能它没有足够的信心?

苹果在iOS 5中加入“Reader”一事上做得相当大。我假设噪音在4.3中不可用

回复:如何通过
UIWebView使用

  • 我在报纸上找不到这件事
  • 这本书里什么都没有
  • 里面什么都没有

实际上,reader按钮在解析HTML页面时会进行一些分析,然后会看到一个清晰的要解析的body标记。如果该插件能够提取确切的正文,它将启用reader按钮(我从readability源代码中了解到)。现在,要为webview实现同样的功能,只需在代码中嵌入java脚本(该java脚本已在可读性源代码中提供),然后就可以实现同样的效果

但我怀疑苹果未来的计划也是如此。因为他们不能仅仅让任何人利用与iCloud相关的巨大商机和可读性相结合来进行内容提取

如果需要,可以简单地从UIWebView中提取HTML,然后提取正文并将其用于您的目的。这不是一门很难提取的科学

从分析的角度来看,只需随机设置10个启用了Reader按钮的HTML页面,您就会看到核心内容只属于正文,其余的add、header、footer是分开的


我相信现在是时候重新发明我们使用的web内容了,这是一个完美的例子。

不要在iOS上原生解析HTML,我以前做过,这是一件麻烦的事情。要么创建自己的web服务来完成所有讨厌的工作,要么研究使用readability(readability.com),它们提供了一个API。 这里还有一个开源的ruby、python和php可读性端口


对于ruby爱好者来说,可读性也可以作为一块宝石,只需谷歌一下就可以了。

您甚至可以通过注入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];

重要提示:此答案不再有效

可读性于2016年9月30日关闭

以下是他们推荐的替代品:

保留答案作为历史参考

---原始答案---

您可以使用可读性mobilizer进行此操作。您将在可读性样式中获得任何文章的清理版本:

http://www.readability.com/m?url=http://{URLOFTHEARTICLE}
只需准备URL并将其加载到UIWebView中。以下是它的实际运行情况:

您可以在iOS9中完成。 首次导入Safaris服务:

#import <SafariServices/SafariServices.h>

为什么要投票?人怎么了?
SFSafariViewController
从iOS 9开始就可以使用,在旧系统上这会导致崩溃。那么如何才能使“清理版本”在UIWebView中看起来好看呢?我在我的应用程序中使用了它,但我希望字体/样式看起来漂亮。
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];