Autor | Zpráva | ||
---|---|---|---|
meca Profil |
#1 · Zasláno: 31. 3. 2015, 22:23:53
Drazí dávní přátelé, a dávní zachránci,
jsem fušér a lepič izolepovou páskou, přiznávám a trochu se za to stydím. Ale můj zájem je jinde, zároveň jsem však okolnostmi nucen plácat dohromady kódy. Na projekt www.jaroslavhavlicek.cz (resp. část Dílo) jsem použil čtečku e-knih epub.js, leč narazil jsem na problém, jehož řešení nikde nemohu najít. Totiž: Dáte-li např. http://www.jaroslavhavlicek.cz/dilo/petrolejove_lampy V pravém sloupci vyberete "# K MAPĚ" a kliknete na "#4 Vejrychovsko" (důležité, neboť předchozí tři jsou na začátku podkapitol), pošle vás to na umístění v Havlíčkově textu. Vidíte však, že se to stalo jakoby na dvakrát. Nejprve se nahrál daný soubor v epubu (vidíte číslo podkapitoly), a až poté umístění (id="p4" v xhtml souboru v epubu) v textu podkapitoly. To je dané tím, že se spustí dvě vpodstatě totožné funkce, jen ta druhá je posunutá o půl vteřiny (evil is devil, čital som). To je ta lepící páska - a ten první problém. Kdyby tam nebyla ta druhá funkce ( jdidva() ), je nutné na odkaz "#4 Vejrychovsko" kliknout dvakrát, což je nežádoucí, ale nejde mi to jinak vyřešit.
Je to asi obecnější problém. Jakoby ten epub nebyl nahraný celý a až tím prvním klikem se nahrál daný xhtml v epubu, a až tím druhým klikem se jde dostat na dané umístění. V tomhle případě však dané "řešení" funguje, horší je to když stejný postup dvojího načítání aplikuji na přímé odkazování z mapy. Tedy např. http://www.jaroslavhavlicek.cz/dilo/petrolejove_lampy#8 To, pokud jste již měli předtím načtenou knihu Petrolejové lampy, funguje. Nebude ale fungovat např. http://www.jaroslavhavlicek.cz/dilo/mana#6, alespoň ne napoprvé. Napodruhé už (možná) ano. Netušíte, prosím, jak problém vyřešit? Jak - nejspíše - nahrát celou komplet knihu, než se začne cokoli dít? Či jsem vedle a je problém jinde? Moc děkuji! m. |
||
juriad Profil |
#2 · Zasláno: 31. 3. 2015, 22:41:25
Zkusme změnit funkci jdi, tak aby přešla na danou adresu dvakrát, ale okamžitě po načtení, nikoli po 0.5 sekundě.
function jdi (kam) { var loaded = Book.goto("Text/" + kam); // vrátí promise if (kam.indexOf('#') >= 0) { // pokud kam obsahuje mřížku loaded.then(function() { // zaregistruje funkci, kterou zavolá po načtení knihy Book.goto(kam); // znovu přejde na požadovanou stránku }); } } |
||
meca Profil |
#3 · Zasláno: 1. 4. 2015, 00:40:22
Bohužel. Při prvním kliknutí se to zachová stejně jako bez
jdidva() , a i když proměná kam obsahuje #, skript se nedostane k Book.goto , resp. k alert() , které jsem tam přidal k otestování. Druhé kliknutí pak pošle text na správnou pozici, ale konzole napíše, že loaded is undefined . :/
|
||
juriad Profil |
#4 · Zasláno: 1. 4. 2015, 09:42:50
Není mi jasné, jak může loaded být undefined. Kterou přesně verzi epub.js používáš? Jsi si jistý, že je to ta nejnovější?
Zdroják té volané funkce je tady: github.com/futurepress/epub.js/blob/master/build/epub.js#L3207 Zkusím se v tom trochu pohrabat až budu mít čas (v řádu dnů), ale třeba poradí někdo jiný. |
||
meca Profil |
#5 · Zasláno: 1. 4. 2015, 10:31:13
Pro sychr jsem tedy nahrál tu poslední verzi. Přidal jsem ještě jedno zpoždění. Funkci
pozn() , která by měla otevírat text na daném místě, jsem dal po otevření knihy, ne body onload= . Občas to vypadá, že to funguje, ale pak se ukáže, že už mam tu knihu nějak nahranou v paměti, či co. A když to vyzkouším později/jinde, tak už to nefunguje.
|
||
Chamurappi Profil |
#6 · Zasláno: 1. 4. 2015, 12:45:43
Reaguji na mecu:
Včera mi stránka v Exploreru 10 řekla, že si musím nainstalovat jedenáctku. Dneska na ni koukám na jiném PC v jedenáctce a také nefunguje, tentokrát bez hlášky. Nebylo by lepší jednorázově převést ePub do nějakého univerzálně čitelného HTML, než spoléhat na pochybně funkční JS knihovnu? |
||
meca Profil |
#7 · Zasláno: 3. 4. 2015, 18:59:01
Chamurappi:
To byla asi moje chyba, předtím. Teď už to, co tak testuji po kamarádech, v 11 fungovat mělo. O tom jsem přemýšlel dnem i nocí. Ale je právě problém, že tam jsou toky textu i 200 stránkové (normálně jako kniha), což by asi působilo guláš. (Je to tam online kvůli tomu odkazování z mapy...) |
||
Časová prodleva: 9 let
|
0