Javascript разделено html съдържание

Създавам ePub четец на IOS. По принцип използвам uiwebview за зареждане на xhtml файловете. Всеки път, когато страницата се обърне, трябва да заредя файла с uiwebview, след което да извикам javascript, за да превъртя до дясното отместване. Ето един проблем, някои xhtml файлове са големи (като > 2MB), така че зареждането им струва твърде много време. По този начин анимацията на обръщане на страницата не е толкова гладка. Така че си мисля, че мога да заредя xhtml веднъж с uiwebviewA и при всяко обръщане на страница създавам друг uiwebviewB и вземам необходимото html съдържание (като втора страница) от uiwebviewA. По този начин бих могъл да огранича html в малък размер и анимацията на обръщане на страницата трябва да е гладка. Въпросът ми е, че има ли библиотека с отворен код на javascript, която може да свърши работата? Всякакви коментари се оценяват!!


person user418751    schedule 25.01.2013    source източник
comment
jQuery Mobile се справя чудесно с вашия проблем, той използва един HTML файл с множество страници, дефинирани в него, така че опитайте: JQM   -  person Nikola Ninkovic    schedule 25.01.2013
comment
Какво е страница Трудно е да се открие какво се побира на страница. Различни шрифтове, размери, изображения, оформление, разстояние, съдържание и др.   -  person epascarello    schedule 25.01.2013
comment
Използвам -webkit-columns за форматиране на html съдържание в колони, така че страница означава колона   -  person user418751    schedule 25.01.2013
comment
@NikolaNinkovic Благодаря, ще проверя.   -  person user418751    schedule 25.01.2013
comment
Да, реших, че използвате колоните, но пропускате смисъла. Тези колони се разкриват в браузъра със съдържанието. Как ще разберете колко данни са необходими, за да попълните тази колона с тази заявка? [Писах на читател, познавам проблемите]   -  person epascarello    schedule 25.01.2013
comment
Как този въпрос е различен от предишния ви в stackoverflow.com/questions/14253702/?   -  person    schedule 25.01.2013
comment
@torazaburo не, този въпрос се опитва да намери решение с Javascript. Имате ли някакви мисли по този въпрос?   -  person user418751    schedule 25.01.2013
comment
@epascarello да, абсолютно си прав. Не знам как да разделя html съдържанието, затова публикувам този въпрос. Тъй като преди писахте за читател, можете ли да ми дадете някакво предложение?   -  person user418751    schedule 25.01.2013
comment
Невъзможно е да се извлекат точни страници. Трябва да напишете бекенда, за да ви даде парчета и да ги заредите предварително.   -  person epascarello    schedule 25.01.2013
comment
@epascarello какво имаш предвид под бекенд? имаш предвид физическия файл? нарежете физическия файл на малки части?   -  person user418751    schedule 25.01.2013
comment
backend, известен още като php/cgi/java/c#, или можете ръчно да го изрежете.   -  person epascarello    schedule 25.01.2013
comment
@epascarello четец на електронни книги като iBooks, santaz няма тези бекенд, но те работят гладко с ePub. Мисля, че трябва да има някои трудни неща за нарязване на големи файлове на малки парчета. Мисля, че трябва да има два начина за рязане. (1) Физически нарежете файла на малки парчета. (2) Извлечете Dom с js, за да получите необходимото html съдържание. И двете изискват добре проектирана библиотека за рязане. Кой път избрахте? И как да режа?   -  person user418751    schedule 25.01.2013
comment
iBooks не е html приложение. Това е родно приложение за iphone, така че има по-добър контрол. Работата е там, че не можете просто да извлечете файл от сървъра и да не се налага да го зареждате в паметта по някакъв начин, за да разберете как да го разбиете. Тъй като използвате CSS, за да извършите странирането, по същество е невъзможно да знаете къде трябва да извлечете разделите на страниците. Можете да направите нещо със специална точка на прекъсване в маркирането, която можете да разглобите с reg exp.   -  person epascarello    schedule 25.01.2013


Отговори (2)


Няма смислен, добре дефиниран начин за разделяне на HTML документ по начина, който изглежда описвате. Вие обърквате две много различни неща: (1) разделяне на изобразяването на части с размер на страница и (2) разделяне на HTML източника. Казано по друг начин, няма алгоритъм, който мога да си представя, който да раздели HTML файл на части, така че последователната композиция на изобразените части да е идентична с изобразяването на оригиналния HTML файл. С други думи, за да разберете как да разделите HTML, ако приемем, че дори е възможно, ще трябва да свършите много или цялата работа, свързана с изобразяването на страницата, което би провалило цялата цел.

Трябва да се откажете от идеята за разделяне на HTML. Всички четци на електронни книги пагинират, като по същество изобразяват целия HTML документ веднъж, след това „прозорци“ и „изрязване“ и „отместване“ или в някои случаи използват CSS региони.

Има няколко алтернативи, за които мога да се сетя, ако разбирам какво се опитвате да направите.

  1. Намалете размера на входните HTML файлове, като ги разделите предварително по-рано в работния процес. Например, в един проект, който познавам, изходните (X)HTML файлове имат части от допълнително маркиране, което казва на предпроцесора къде да ги раздели на отделни файлове, ако желае, което в този случай е заобиколно решение за четци на електронни книги, които не не спазва правилно свойствата на CSS page-break-*.

  2. Предварително изчислете изобразяването на следващата страница като графика и я използвайте за обръщане на страницата.

  3. Както вече беше обсъдено, преосмислете своята архитектура за презареждане на целия HTML документ за всяка страница във вашата книга. Ако това са просто ефекти на обръщане на страници, които ви карат да искате да направите това, тогава се откажете от тях.

  4. Помислете, че много четци на електронни книги предоставят режим на превъртане, който не изисква пагинация, а някои (напр. Himawari Reader) предоставят режим само на превъртане, което всъщност е нещо, което някои читатели предпочитат. Можете да изложите своята версия за превъртане и след това да направите пагинация във версия 2.

person Community    schedule 26.01.2013
comment
Знаете ли някой четец с отворен код, който осигурява режим на превъртане? Това ще ми е полезно и ще ми спести време. Благодаря предварително! - person user418751; 29.01.2013

Наистина трябва да проверите това:

http://cubiq.org/swipeview

И тази демонстрация, която прави точно това, което поискахте:

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

Взема текст (книга) и пагинира текста, за да пасне на размера на екрана.

Тествах демото в Android и iOS и работи страхотно!!

person Juan Fco. Roco    schedule 03.06.2013