2012-07-17 22 views
6

Pencerenin yüklü olup olmadığını öğrenmem gerekiyor.Pencerenin herhangi bir global değişken kullanmadan yüklenip yüklenmediğini belirleme

Ben true veya false bunu çağırdığınızda dayanarak bu durumu göstermek için dönecektir bir checkLoaded işlevi oluşturmak istiyorum.

<html> 
<head> 
    function checkLoaded(){ 
    //alert true if window is loaded or alert false 
    } 
</head> 
<body onload="checkLoaded()"> <!-- This should alert true --> 
    Loding window. 
    <script> 
     checkLoaded();// this should alert false; 
    </script> 
</body> 
</html> 

Pencere yüklendiğinde ayarladığım genel bir değişken kullanmak istemiyorum.

window nesnesinin durumunu, belki de bir özelliği kontrol edebileceğim herhangi bir yolu var mı?

jQuery veya başka bir dış kitaplık kullanmak istemiyorum.

+0

Eğer "yük" işleyicisindeyseniz, pencere yüklenir. sorun nedir? – jbabey

+0

Bir işlev var ve aynı işlev, doğru veya yanlış uyarı olmalıdır. aradığım yere göre. Grzegorz Kaczan'ın aşağıda belirtildiği gibi – gaurang171

+0

, sadece çalışmak için iki olayınız var. Böylece, doğru/yanlış değerlerinizi kontrol etmek için size en uygun olan olaylardan hangisini kullanırsınız? Ayrıca, neyi başarmaya çalıştığınız ve neden yapıldığına dair bir bağlam sağlamaya da yardımcı olabilir. "Pencere yükü" birçok insan için çok şey ifade edebilir. ve bu iki temel olay, (en çok ihtiyaç duyduğunuz şeyi yapmak) işlevini() burada sağlar. –

cevap

20

Doküman herhangi olayları dinlemeden yüklenip yüklenmediğini kontrol etmek için document.readyState özelliğini kullanabilirsiniz. Belge ve tüm alt kaynakların yüklenip yüklenmediğini kontrol etmek için "complete" olarak ayarlanacaktır. (Bu load olaya karşılık gelir.)

function checkLoaded() { 
    return document.readyState === "complete"; 
} 

yalnızca belge subresources endişesi olmadan yüklenip yüklenmediğini kontrol etmek istiyorsanız mülkiyet "interactive" ise, ayrıca kontrol edebilirsiniz.

function checkLoaded() { 
    return document.readyState === "complete" || document.readyState === "interactive"; 
} 

Bu, geçerli tarayıcılarda çalışmalıdır, ancak tüm tarayıcıların eski sürümlerinde desteklenmez.

+0

Bu tam olarak aradığım şey çok teşekkürler. – gaurang171

+1

"Geçerli" tarayıcılar hangileridir ve "eski" tarayıcılar hangileridir? – Steve

+5

Bu kod, belgeyi hazır değil, pencere yükünü kontrol eder. Bir fark var http://stackoverflow.com/a/8835458/319266 – Krinkle

1

pencere yüklendiğinde bu uyarır:

(function(w) { 
    //private variable 
    var loaded = false; 
    w.onload = function() { 
     loaded = true; 
    }; 

    w.checkLoaded = function() { 
     alert(loaded); 
    }; 
})(window); 

Artık uygulamanız herhangi bir yerinden checkLoaded() çağırabilir ve onu doğru veya yanlış dönecektir.

+0

gereksinimi doğru anlamak lütfen.Bir fonksiyonum var ve aynı fonksiyon doğru veya yanlış alarm olmalı. aradığım yere göre. – gaurang171

+0

Çapraz tarayıcı mı çalışır? – Jashwant

+0

@ keyuratcodebins.com, bir fonksiyon – Paul

1

Sen 2 aktüel vardır:

<html> 
<script> 
    var loaded = false; 
  function checkLoaded(){ 
    alert(window.loaded); 
  } 
</script> 
<body onload="window.loaded = true; checkLoaded()"> 
   Loading window. 
     <script> 
     checkLoaded(); 
    </script> 
</body> 
</html> 
+0

fonksiyonunu içerecek şekilde güncellenmiş bir soruyum var CheckLoaded ve bu pencerenin yüklü olup olmadığını bilmek istiyorum. Bu işlevde, iki farklı yerde iki kez aynı işlevi çağırdığım koda bakın. – gaurang171

1

bir fark böyle Belki sadece bir şey görebilir?

<script> 
    var loaded = false; 
    function checkLoaded(){ 
     alert(loaded); 
     //alert true if window is loaded or alert false 
    } 
</script> 


<body onload="loaded = true;checkLoaded();"> <!-- This should alert true --> 
    Loding window. 
    <script> 
     checkLoaded();// this should alert false; 
    </script> 
</body> 
0

bu yardımı mu:

addListener(document, "DOMContentLoaded", function(){}); //Dom parsing is finished 
addListener(window, "load", function(){}); //loading of all external stuff is done 

Siz bu here

İlgili konular