【问题标题】:Javascript split html contentJavascript拆分html内容
【发布时间】:2013-01-25 00:58:19
【问题描述】:

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

【问题讨论】:

  • jQuery Mobile 可以很好地解决您的问题,它使用一个 HTML 文件,其中定义了多个页面,因此请尝试一下:JQM
  • “什么是页面” 很难检测出适合页面的内容。不同的字体、大小、图像、布局、间距、内容等。
  • 我使用 -webkit-columns 将 html 内容格式化为列,所以一个页面就是一个列
  • @NikolaNinkovic 谢谢,我会检查的。
  • 是的,我认为您正在使用这些列,但您没有抓住重点。这些列是在浏览器上与内容一起计算出来的。您如何知道该请求需要多少数据来填充该列? [我写了一个读者,我知道问题]

标签: javascript html uiwebview split epub


【解决方案1】:

没有任何有意义的、定义明确的方法可以按照您所描述的方式拆分 HTML 文档。您混淆了两件非常不同的事情:(1)将渲染拆分为页面大小的块,以及(2)拆分 HTML 源代码。换一种说法,我可以想象没有一种算法可以将 HTML 文件拆分成多个片段,这样渲染片段的顺序组合就与原始 HTML 文件的渲染相同。换句话说,为了弄清楚如何拆分 HTML,假设它甚至是可能的,您必须完成渲染页面所涉及的大部分或全部工作,这将破坏整个目的。

您应该放弃拆分 HTML 的想法。电子书阅读器基本上都是通过一次渲染整个 HTML 文档来进行分页的,然后“加窗”、“剪辑”和“偏移”,或者在某些情况下,使用 CSS 区域。

如果我了解您要做什么,我可以想到几个替代方案。

  1. 通过在早期预拆分输入 HTML 文件来减小它们的大小 工作流程。例如,在我知道的一个项目中,源 (X)HTML 文件有一些额外的标记,可以告诉预处理器在需要时将它们拆分为单独的文件,在这种情况下,这对于不使用的电子书阅读器来说是一种解决方法'不正确地尊重 CSS page-break-* 属性。

  2. 将下一页的渲染预计算为图形和 用它来翻页。

  3. 如前所述,重新考虑为书中的每一页重新加载整个 HTML 文档的架构。如果仅仅是翻页效果 引导你想要那样做,然后放弃。

  4. 请考虑许多电子书阅读器提供的滚动模式 不需要分页,有些(例如 Himawari Reader)只提供 滚动模式,这实际上是一些读者喜欢的东西。 你可以把你的滚动版本,然后在版本2中进行分页。

【讨论】:

  • 你知道任何提供滚动模式的开源阅读器吗?这对我有帮助并节省我的时间。提前致谢!
【解决方案2】:

你真的应该检查一下:

http://cubiq.org/swipeview

这个演示完全符合您的要求:

http://cubiq.org/dropbox/SwipeView/demo/ereader/

它需要一个文本(书)并将文本分页以适应屏幕大小。

我在 Android 和 iOS 上测试了演示,效果很好!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 2021-06-04
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多