2013-01-25 69 views
1

我正在IOS上创建一个ePub阅读器。基本上,我使用uiwebview来加载xhtml文件。 每次翻页时,我需要用uiwebview加载文件,然后调用javascript滚动到右偏移量。这是一个问题,一些xhtml文件很大(如大于2MB),因此加载时间太长。因此翻页动画并不那么流畅。 所以我想我可以用uiwebviewA加载一次xhtml,并且每次翻页时,我都会创建另一个uiwebviewB并从uiwebviewA中获取所需的html内容(如第二页)。这样,我可以将html限制为小尺寸,并且页面转动动画应该平滑。 我的问题是,是否有任何开源的JavaScript库可以完成这项工作? 任何意见是赞赏!Javascript拆分html内容

+0

jQuery Mobile处理您的问题非常好,它使用一个HTML文件并在其中定义了多个页面,因此请尝试:[JQM](http://jquerymobile.com/) –

+0

“什么是页面”它很难检测到页面上的内容。不同的字体,大小,图像,布局,间距,内容等 – epascarello

+0

我使用-webkit-columns将html内容格式化为列,所以页面意味着列 – user418751

回答

1

没有有意义的,明确定义的方法来按照您所描述的方式拆分HTML文档。你混淆了两个截然不同的东西:(1)将渲染分成页面大小的块,(2)拆分HTML源代码。换句话说,没有一种算法能够想象将一个HTML文件分割成多个片段,这样渲染片段的顺序组合就与原始HTML文件的渲染相同。换句话说,为了弄清楚如何分割HTML,假设它甚至是可能的,你必须做很多或所有涉及渲染页面的工作,这将失去整个目的。

您应该放弃分割HTML的概念。电子书阅读器的所有分页都是基本上呈现整个HTML文档,然后“窗口化”和“剪辑”和“抵消”,或者在某些情况下使用CSS区域。

如果我明白你想要做什么,我可以想到有几种选择。

  1. 通过预分裂他们早在 工作流程降低输入HTML文件的大小。例如,在我知道的一个项目中,源(X)HTML文件有一些额外的标记,告诉预处理器在需要时将它们分割成单独的文件,在这种情况下,这是对电子书阅读器的解决方法无法正确使用CSS page-break-*属性。

  2. 预先计算下一页的渲染为图形,并使用 进行翻页。

  3. 如上所述,重新考虑您的书中每个页面重新加载整个HTML文档的架构。如果仅仅是翻页效果,那么导致你想要这样做,然后放弃它。

  4. 考虑到许多电子书阅读器提供滚动模式,做 不需要分页,有的(如向日葵阅读器)提供只有 滚动模式,这实际上是一些读者喜欢的东西。 您可以放出滚动版本,然后在版本2中进行分页。

+0

非常感谢您的解决方案。这些对我非常有帮助! – user418751

+0

你知道任何提供滚动模式的开源阅读器吗?这对我有帮助并节省我的时间。提前致谢! – user418751