| 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: 11 let
|
|||
0