javascript - 如何获得一个好的 iOS 网络阅读器

标签 javascript ios browserify

给定一个网页,我想提取文本以供读者查看。我知道 SFSafariViewController 提供阅读器模式,但对于我的应用程序,我需要实际的文本字符串。我也知道 Mercury parser ,但我更喜欢在本地运行的解决方案。

我尝试了很多选择:

luin/Readability 看起来很有趣。它似乎是一个非常活跃的 Github 项目。但是,我无法让它在 iOS 下工作。我尝试/做了什么:

我安装并使用了 browserify 来获取一个独立的 JavaScript 文件。但是,我收到一条错误消息 Error: Mismatched anonymous define() module。我读到这个问题可以通过使用 derequire 来解决。我试过了,但没有成功。

谁能给我一些关于如何使 luin/Readability 在 iOS 上工作的建议,可能是通过使用 browserify 或任何其他方式?

最佳答案

我在需要将 Readability 中的 HTML 呈现为 TextView 的项目中遇到了类似的问题。我最初的方法是使用 WKWebView 进行渲染,方法是使用 WKWebViewevaluateJavaScript 注入(inject)稍微修改过的 Mozilla Readability。

Mozilla Readability 代码存储为本地文件,并通过附加以下代码进行了修改:

// Execute Readbility on the currently loaded DOM

var uri = {
spec: location.href,
host: location.host,
prePath: location.protocol + "//" + location.host,
scheme: location.protocol.substr(0, location.protocol.indexOf(":")),
pathBase: location.protocol + "//" + location.host +  location.pathname.substr(0, location.pathname.lastIndexOf("/") + 1)
}; var documentClone = document.cloneNode(true); var article = new Readability(uri, documentClone).parse(); article;

然后使用 DTCoreText 呈现生成的内容。 WKWebView 将加载网页的所有资源,包括所有图像、广告等。这使得该方法非常占用内存,我尝试通过在将图像传递给 WKWebView 之前解析和删除图像来规避此问题>。总的来说这是有效的,但根据您的用例,可能不是很优雅或很快。

目前我正在使用一种不同的方法,它涉及使用 phantomJS 在服务器上运行 luis Readability,这在内容提取方面提供了更好的结果,并且在客户端上占用的内存更少。

关于javascript - 如何获得一个好的 iOS 网络阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41379338/

相关文章:

javascript - 将 JS 文件与 firefox-addon 一起使用时的内容安全策略问题

javascript - 无法使用 JavaScript 更改窗口对象的属性

ios - 是否可以排除对 Cocoapods 的依赖?

objective-c - 如何将具有特殊字符的字符串拆分为 NSMutableArray

ios - 如何导入 chilikat 类到 swift?

javascript - 如何使用 sinon stub /模拟从 "superclass"复制的依赖项方法

javascript - 可以将信息传递到浏览器文件吗?

javascript - 具有箭头功能的 Angular 7 生产构建 (AOT)

javascript - 有没有办法从 child_process.execFile 生成的 python 脚本中获取 'live' 输出行,而无需每次都刷新 stdout?

javascript - 如何从 browserify 加载公开 module.exports 的客户端脚本(通过 jadeify)