2013-01-25 67 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