SORU
20 AĞUSTOS 2009, PERŞEMBE


JavaScript: DOM yük olaylar, yürütme sırası, ve(belge)$.()hazır

Ben sadece bir sayfa bir tarayıcı içine yükleniyor tam olarak ne temel bilgi eksikliği olduğunu fark ettim.

Böyle bir yapısı var varsayalım

<head>

<script src="jquery.js" type="text/javascript"></script>
<script src="first.js" type="text/javascript"></script>
</head>
<body>
...
<script type="text/javascript" id="middle">
    // some more JS here...
</script>
...
<script src="last.js" type="text/javascript"></script>
</body>

Burada ben soru vardır:

  1. Ne sırası şeyler oluyor?JS yürütülen ilk DOM sonra, tersi mi, yoksa aynı anda (ya da en kısa sürede JS dosyaları bitirmek indirme, DOM göz önünde bulundurmadan)? Komut sırada yüklü olduğunu biliyorum.

  2. Nerede $(document).ready() uyum sağlayabiliyor mu?Firebug Net sekmesi DOMContentLoaded olay load olay görüyorum. $(document).ready() DOMContentLoaded olayı ne zaman tetiklenir? Bu konuda herhangi bir somut bilgi bulamadım (herkes sadece söz DOM yüklendiğinde"").

  3. Tam olarak "DOM zaman yüklü" demek? ne yapar Tüm HTML/JS ve tarayıcı tarafından indirilen ayrıştırıldı? Yoksa sadece HTML mi?

  4. Aşağıdaki senaryo mümkündür: last.js, kod diyor ama ... last.js yüklenmeden önce çalışır? $(document).ready() var Nerede büyük olasılıkla (first.js veya satır kod bloğu) olur mu?Bu senaryo nasıl önleyebilirim?

Ne olacağını ve ne bağlıdır ne büyük resmi () nasıl olduğunu anlamak istiyorum.

CEVAP
20 AĞUSTOS 2009, PERŞEMBE


Javascript görüldüğü gibi yürütülür.Genellikletarayıcı <script> etiketi görür görmez sayfayı ayrıştırma durur , ve script indirme çalıştırılır ve sonra devam ediyor. Tarayıcının kullanıcı betikleri indirmek için beklerken boş bir sayfa yok. bu genellikle alt kısmında <script> etiketleri yerleştirmek için tavsiye edilir nedeni budur:

Ancak, Firefox 3.5, komut başlayarak sayfanın geri kalanı render ederken arka planda indirilir. Komut dosyası document.write kullanan veya benzer şimdi alışılmadık bir olay, Firefox yedekleme ve gerektiğinde yeniden çizer. Sanmıyorum diğer tarayıcılar bunu şu anda, ama ben hiç şaşırmadım olsaydı gelecek, YANİ en azından destekler defer öznitelik <script> etiketi başvuracağım yükleme komut kadar sonra sayfa yeniden yüklenir.

DOMContentLoaded tam olarak bu: DOM yüklenir en kısa sürede harekete Bu, tarayıcı HTML tüm ayrıştırıldı ve bir ağaç yarattı en kısa sürede içten. Resimleri, CSS, vb beklemez. yük. DOM genelde ne istersen çalıştırmak için gereken, güzel diğer kaynaklar için beklemek zorunda değil yani. Ancak, DOMContentLoaded; Diğer tarayıcılarda sadece Firefox destekler, ready() onload düzenli eski bir olay eklemek olacak sanırım.

Javascript HTML göründüğü sırada çalıştırın, yani sadece fonksiyon bir olay eklemek için denemeden önce tanımlandığından emin olmak için garanti edilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • Tina Chen

    Tina Chen

    26 Mayıs 2012