Autor | Zpráva | ||
---|---|---|---|
mol Profil * |
Ahoj, mám stránku čistě v html a tam
document.addEventListener('DOMContentLoaded', fceRDOM); ale ted když jsem to přendal do php a spustil přes xampp tak se to vůbec nezavolá, ale ostatní jako např scroll nebo onload se zavolají. Čím by to mohlo být? tady jsme snad našel odpověď, ale zajímalo by mě proč to v čistě napsaném html funguje bez problemu a když to spouštím přes xampp tak to nejde. Object moved namísto async jsem napsal defer a ted se to spustí, ale špatně to počítá šířku divů - jako kdyby to nemělo z css nastavenou nebo propočítanou šířku a bere to jako 100% width blok. A když dám před body byt jen prázdný <script> </script> netušíte čím by to mohlo být? *když dám před </body> (ukončovací body, předtim sem to napsal špatně) když ten script mám jako async a na poslední řádek v tom skriptu napíš if ( document.readyState === "complete") { setTimeout(fceRDOM, 1); } |
||
mol Profil * |
a některý elementy vypočítává s nulovou velikostí i když je tma text.
vubec nechápu čím by to mohlo být |
||
mol Profil * |
#3 · Zasláno: 3. 8. 2018, 10:26:25
Tady je napsáno že js čeká na načtení stylesheet. Jak to že tedy JavaScript spočítá že některé prvky mají 100 procentní šířku a u jiných nulovou když je v nich navíc text? Nedaří se mi sem skopírovat odkaz na ten článek ale to na věci nic nemění.
|
||
RastyAmateur Profil |
#4 · Zasláno: 3. 8. 2018, 10:39:49
To my nevíme, páč nevidíme kód. Každopádně se mi nechce věřit, že když stránku pustíš přes xamp, že ti funguje javascipt jinak...
|
||
mikulas12 Profil |
Chtělo by to kod
|
||
mol Profil * |
#6 · Zasláno: 3. 8. 2018, 10:59:17
RastyAmateur:
Tu stránku vygenerovanou přez xampp jsem uložil jako a spustil bez xampu a blbne to. Za chvilku sem dám kod |
||
RastyAmateur Profil |
#7 · Zasláno: 3. 8. 2018, 11:46:49
mol:
Proboha a proč ji ukládáš? |
||
mol Profil * |
#8 · Zasláno: 3. 8. 2018, 12:12:11
tak tady to je... sou tam tři složky včetně puvodního navrhu kterej funguje
files.uloziste.com/20efcdc7cba4176e |
||
RastyAmateur Profil |
#9 · Zasláno: 3. 8. 2018, 15:13:05
mol:
Ta funkce se na DOMContentLoaded vůbec nezavolá. Nevím proč, každopádně stále nechápu, proč ukládáš vygenerované PHP stránky. Normálně na serveru (když si to pustíš na localu) to funguje, ne?
|
||
mol Profil * |
Ale0
RastyAmateur: „Normálně na serveru (když si to pustíš na localu) to funguje, ne?“ Právě že nefunguje. Proto jsem to taky uložil aby jste mi řekli co tam mám špatně. když odeberu to async a defer, tak ten contentloaded nemůže nastat dříve.. .odebral jsem to a ted se to zavolá, ale když to počítá šířku <a> položek menu tak to bere jako 0px. Zkoušel jsem to 10x znovu načíst a jen párkrát se to povede tak jak má. netuším čím to je snad se najde někdo kdo tomu rozumí |
||
mol Profil * |
zkoušel jsem to s jquery a ready funkcí a bezvýsledně (až an to že ten jquery ready se zavolá jak má)... zkouším to snad desetkrát a 6x to vypočítá že logo a vyhledávač má plnou šířku 1887px a jednotlivé položky menu mají každá 0px... 4x z deseti to změří správně... nechápu čím by to mohlo být.
když nastane domcontentloaded tak by měl mít dom všechny ty prvky - tj rozměry, šířka, výška vypočítané, nebo snad ne? (kromě obrázků který by se mohli stahovat, ale když mám jen <a href="#">Položka menu</a> tak by to snad mělo být spočítané, a ne že se mi vrátí 0 velikost. |
||
RastyAmateur Profil |
#12 · Zasláno: 3. 8. 2018, 20:39:15
mol:
Já se ale obávám, že ona se ta funkce vůbec nevykoná, ne že přiřadí hodnotu 0. DOMContentLoaded „The DOMContentLoaded event is fired when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading. A very different event load should be used only to detect a fully-loaded page.“ |
||
mol Profil * |
#13 · Zasláno: 3. 8. 2018, 21:07:47
RastyAmateur:
„The DOMContentLoaded event is fired when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading. A very different event load should be used only to detect a fully-loaded page.“ ale houby, já přece viděl příklad kde ukazovali že to čeká na stylesheety javascript.info/onload-ondomcontentloaded#domcontentloaded-and-styles Jestli jsem tohle správně přečetl tak to čeká na stylesheety... ta domloaded se nespustí, ale když to dám do ready funkce jquwery tak už se to spustí jak má akorát to počítá že ty prvky mají 0 šířku a někdy to spočítá správnou šířku. navíc to teoreticky ani nepotřebuje žádný stylesheet protože ext sám o sobě musí mít přece šířku. |
||
Keeehi Profil |
#14 · Zasláno: 3. 8. 2018, 22:18:51
mol:
„Jestli jsem tohle správně přečetl tak to čeká na stylesheety“ Na začátku se píše, že na styly nečeká, na konci že čeká. Ono je to ovlivněno pořadím stylů a scriptu v dokumentu. Tvoji ukázku si teď stáhnout nemohu, takže nevím, jaký je zrovna tvůj případ. Ale pokud se do toho přidá ještě async, může to být úplně jinak jelikož async scripty se vykonávají nezávisle na stránce. Tudíž ani ten HTML dokument nemusí být zatím celý naparsovaný. |
||
mol Profil * |
Keeehi:
„Ono je to ovlivněno pořadím stylů a scriptu v dokumentu.“ Já měl nahoře script a až pod tím styly... takže když dám nahoru styly a dolů script tak by to mělo čekat, je to tak? ted sem to zkoušel snad 30x a vypočítalo to dobře, takže tohle už snad mám za sebou.... sakra takovýhle malý chyby a já u toho strávím skoro celej den.... ale pořád nechápu proč se nezavola ten contentloaded |
||
Keeehi Profil |
#16 · Zasláno: 3. 8. 2018, 22:30:39
mol:
Pokud nemá async tak ano. Pokud ho má, je to složitější. Tato stránka není úplně nějvěrohodnější zdroj informací ale teď to snad bude stačit. Je tam napsáno, jak async a defer ovlivňují čas spuštění. A tady v češtině Připojení JavaScriptu s async a defer
|
||
mol Profil * |
Keeehi:
hm, vím jak vypadá async a defer ale nenapadlo mě že by se to mohlo načíst později až skončí DOMcontentloaded,... spíš sem čekal že by se to spustilo i tak... ale když se podívám na tohle tak by ten defer měl stačit.... ale i tak jak by se to řešilo kdybych tam měl async? ale co když se ten js soubor ještě nestáhne a on už by měl probíhat contetload... tak bude čekat než se to stáhne doufám.... ufffffffffffffffffffffffff.... no teda..... to mi dalo zabrat... děkuju všem za pomoc.... |
||
mol Profil * |
#18 · Zasláno: 4. 8. 2018, 09:10:52
Ale pořád bych chtěl vědět jak to udělat s async
|
||
Časová prodleva: 6 let
|
0