2013-05-08 26 views
6

Yeni javascript'i w3school'dan öğrenmeye başladım ve şunu öğrendim: "Document.write'i sadece HTML çıktısında kullanabilirsiniz. Belge yüklendi, tüm belgenin üzerine yazılacak. "Neden javascript document.readyState için yüklenmiyor? === "complete"

<html> 
    <head> 
     <title>ashish javascript learning</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <p> sample html with javascript </p> 
     <script> 
      document.write("<h1>this is heading</h1>"); 
      document.write("<p>this is sample para</p>"); 
     </script> 
     <script> 
      if(document.readyState === "complete"){ 
       loaded(); 
      } 
      function loaded(){ 
       document.write("<p>loading content after the document has been loaded"); 
      } 
     </script> 
    </body> 
</html> 

Kod hala eski değerini gösterirken ve web sayfasının içeriğini üzerine yazma değildir: bu yüzden geçerliliğini kontrol etmek için aşağıdaki kodu yazmak için çalıştık. Bana neyi yanlış yaptığımı önerebilir misin? Eğer document.readyState === "complete" test ediyoruz zamanda

+3

Neden document.write' kullanıyorsunuz? –

+4

@Ashish: Güvenilir JavaScript kaynaklarından biri, iyi kaynaklara ve kılavuzlara tonlarca bağlantıya sahip olan [** JavaScript MDN **] (https://developer.mozilla.org/en/docs/JavaScript) olacaktır. – Nope

+1

Temel olarak, 'document.write' çağrılarınızın her biri ilk sayfa oluşturma sırasında gerçekleşir. 'If' kısmı sadece 'false' ve 'loaded()' için değerlendirecektir, asla çağrılmayacaktır. – devnull69

cevap

12

, belgenin readyState o "yükleme", "tam" değil, bu yüzden hiçbir şey olmuyor ve loaded asla denir.

readyState değiştirmek için Sen dinleyebilirsiniz

ve sonra çek o "tam" olmadığını görmek (veya daha kolaydır window.onload dinlemek) için: mekanizma olay tabanlı

document.onreadystatechange = function() { 
    if(document.readyState === "complete"){ 
    loaded(); 
    } 
} 
+0

Belgenim oluşturulmuş olan dosyayı indirmek için pdf ile açılırsa, açılır pencere açılır ve tam hazır durumda ancak dosya henüz yüklenmedi, teşekkürler. – shareef

4

çünkü. Bunu sadece DOM yüklendikten sonra kullanmalısınız, bu yüzden anlamsız.

Değerlendirme yerinde yapılır, ancak değerlendirme sırasında document.readyState == "complete"false olduğundan hiçbir şey olmaz.

şeyler yapmak için basit bir yolu:

window.onload = function() { 
    loaded(); 
}; 
3

Ne yapmak gerek daha sonra readystate değeri çek readystatechange olay bir fonksiyon kanca olduğunu. Böyle

document.onreadystatechange = function() { 
    if (document.readyState === 'complete') { 
     initApplication(); 
    } 
} 
0

yazma, size

document.onreadystatechange = function(){ 
    if(document.readyState == 'complete'){ 
     document.write('document is overwrite') 
    } 
} 
+0

nedenini açıklayabilir misiniz? hiçbir açıklama yapmadan sadece bir cevap vermek her ne olursa olsun yapıcı değildir ve neden sorusuna cevap vermez? – glls

0

üzgün hiçbir açıklama için istediğiniz sonucu elde edecektir; kod javascript üzerinde yürütüldüğünde dom tamamlanmadı, bu nedenle belgenin readyState 'complete' değil, initApplication işlevi çağrılmayacak; InitApplication işlevini çağırmak isterseniz, belgeye bir tetikleyici eklemelisiniz. 'Document.onreadystatechange' gibi bir tetikleyici ekliyorum. "Document.onreadystatechange", belgenin durumu değiştiğinde çağrılacak; Belge yüklendiğinde bu yüzden, "document.onreadystatechange" çoklu örnekler ve açıklamalarla

İlgili konular