Inicializace komponenty JS na konci HTML nebo na „onload“?

hlasů
2

Nějakou dobu jsem byl spuštěn JavaScript inicializaci komponenty čekáním na „onload“ událost na oheň a provedením main()svého druhu. Zdálo se, že čistší a ty by mohly být jisti, že ID stav vašeho DOM bylo v pořádku. Ale po nějaké době uvedení, které prostřednictvím svých kroků jsem zjistil, že inicializace součásti se udusil pryč jakoukoli zavěšení zdrojů při zátěži (obrázky, css, jezdci, blesk, atd.).

Teď jsem se přesunul inicializační vzývání na konci HTML dokumentu samotného pomocí inline <script />provedení a zjistil, že to tlačí inicializace před dalších externích zdrojů.

Teď jsem zvědavý, jestli tam jsou některé nástrahy, které přicházejí s tím, že namísto čekání na „onload“.

Kterou metodu používáte?

EDIT : Díky. Zdá se, že každá knihovna má speciální funkci pro DOMContentLoaded/ readyStaterozdíly implementace. I používat prototyp, takže to je to, co jsem potřeboval.

Položena 03/04/2009 v 17:36
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
2

JQuery má $ (dokument) .ready ()

Ideálním místem, ve kterém spouštět většinu skriptů je, když je dokument připraven, a ne nutně, pokud je „naložený“.

více zde

Odpovězeno 03/04/2009 v 17:40
zdroj uživatelem

hlasů
1

Já používám taky ne. Místo toho jsem závislá na Yui je onDomReady () (nebo onContentReady () / onAvailable ()), protože to zvládá časování inicializace pro mě.

(Další knihovny JS mají podobné metody pro provádění pouze jednou stránka je plně naložené, protože se jedná o běžný JS problém).

Odpovězeno 03/04/2009 v 17:41
zdroj uživatelem

hlasů
4

Pro mě, používáme jQuery a její dokument připravený stát zajišťuje, že DOM je načten, ale není čekání na zdroje, jako byste říct. Můžete samozřejmě s tím bez javascript rámce, to vyžaduje funkci, můžete vytvořit například: dokument připravený Nyní, ve většině případů uvedení skript na konci stránky, zda zajistit zbytek stránky je tam, ale dělat Ujistěte se, že DOM je připraven není nikdy na škodu.

Odpovězeno 03/04/2009 v 17:41
zdroj uživatelem

hlasů
1

Který není v souladu s jakýmkoliv (X) HTML a spec bych radil proti tomu. To by dát vaše stránky na vtípky režimu prohlížeče.

Odpovězeno 03/04/2009 v 17:42
zdroj uživatelem

hlasů
1

Správný způsob, jak vyřešit problém, by bylo použít DOMContentLoadedudálost, která není podporována ve všech prohlížečích. Hacky (například průzkum veřejného mínění doScroll()nebo používající onreadystatechange) existují, takže knihovny jsou schopny poskytnout tuto funkci v různých prohlížečích.

Ale stále existují problémy s DOMContentLoadeda blokového převody, které nebyly řešeny populárních rámců JavaScript.

Tady je můj pohled na problematiku .

Odpovězeno 03/04/2009 v 23:11
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more