$ (Window) .load () ve $ (document) .ready () işlevleri arasındaki fark


216

$(window).load(function() {})Ve $(document).ready(function() {})jQuery arasındaki fark nedir ?

Yanıtlar:


266
  • document.readybir jQuery olayıdır, DOM hazır olduğunda çalışır, örneğin tüm öğeler bulunacak / kullanılacaktır, ancak tüm içerik olması gerekmez .
  • window.onloadresimler ve benzerleri yüklendiğinde daha sonra (veya en kötü / başarısız durumlarda aynı anda) patlar ; bu nedenle, örneğin resim boyutlarını kullanıyorsanız, bunu genellikle kullanmak istersiniz.

38
stenografi için $(document).ready(function(){})ise $(function(){})ve window.load başka önemli fark bile başlangıçtaki DOMready sonrasına fonksiyonun TÜM gelecek çağrılarda çalışacak olmasıdır.
Michael Butler

2
@dbliss Evet Ben onload kısayol olduğunu düşünüyorum $(window).on('load'). Her ikisi de load olayını referans alır .
Bedava Lancer

5
@MichaelButler - Ne demek istiyorsun it will run on ALL future calls of the function?
BornToCode

7
@MichaelButler: Yorumunuzda daha açık olmanız gerekiyor. 1) $(document).readyDOM hazır olduktan sonra KULLANICI'dan daha fazla kod yürütmesi hakkında konuşuyorsunuz . Bu o kadar küçük bir kullanım örneğidir ki muhtemelen herkesi bahsetmekle karıştırmaya değmez. 2) ÇEVRE $(document).ready(f‌​unction(){}), DOM hazır olduğunda yalnızca bir kez arar . Kullanıcı, herhangi bir nedenle, $(document).readyDOM hazır olduktan sonra daha fazla yürütürse , evet, hemen yürütülür.
Doug S

4
Farklı olmaya yalvarıyorum, Michael. Sadece bu noktada bırakalım ve işe yaramaz yorumlara ayrılmayalım. En azından şaşkın insanların cevabı şimdi.
Doug S

73
$(document).ready(function() {
 // executes when HTML-Document is loaded and DOM is ready
 alert("document is ready");
});


$(window).load(function() {
 // executes when complete page is fully loaded, including all frames, objects and images
 alert("window is loaded");
});

22

$(window).load()JQuery 3.0 KULLANILAMAZ

$( window ).load(function() {
        // Handler for .load() called.
});

Bu sorunu aşmak için "Olay İşleyici Eki" olarak kullanabilirsiniz.

$( window ).on("load", function() {
        // Handler for .load() called.
});

14

Aradaki fark:

$(document).ready(function() { DOM yüklendiğinde tetiklenen jQuery olayıdır, bu nedenle belge yapısı hazır olduğunda tetiklenir.

$(window).load() tüm içerik yüklendikten sonra etkinlik tetiklenir.


9
<html>
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script>
    $( document ).ready(function() {
        alert( "document loaded" );
    });

    $( window ).load(function() {
        alert( "window loaded" );
    });
    </script>
</head>
<body>
    <iframe src="http://stackoverflow.com"></iframe>
</body>
</html>

window.load tüm iframe içeriği yüklendikten sonra tetiklenir


7

$(document).ready DOM'da tüm öğeler bulunduğunda olur, ancak tüm içerik zorunlu olmayabilir.

$(document).ready(function() {
    alert("document is ready");
});

window.onloadveya $(window).load()tüm içerik kaynakları (resimler vb.) yüklendikten sonra gerçekleşir.

$(window).load(function() {
    alert("window is loaded");
});


0

HTML dokümanı yüklendikten ve DOM hazır olduktan hemen sonra document.ready (jQuery) document.ready yürütülür.

DOM: Belge Nesne Modeli (DOM), HTML, XHTML ve XML belgelerindeki nesneleri temsil etmek ve bunlarla etkileşime geçmek için platformlar arası ve dilden bağımsız bir kuraldır.

$(document).ready(function()
{
   // executes when HTML-Document is loaded and DOM is ready
   alert("(document).ready was called - document is ready!");
});

window.load (Yerleşik JavaScript) window.load, sayfanın tam olarak yüklenmesini bekleyecektir, buna iç çerçeveler, resimler vb. dahildir. * window.load yerleşik bir JavaScript yöntemidir, bazılarına sahip olduğu bilinmektedir. eski tarayıcılarda (IE6, IE8, eski FF ve Opera sürümleri) ilginçtir, ancak genellikle hepsinde çalışır.

window.load, vücudun onload olayında bu şekilde kullanılabilir (ancak daha sonra karışıklık için bir kaynak olduğu için HTML'de böyle bir kodu karıştırmamanızı şiddetle tavsiye ederim):

$(window).load(function() 
{
   // executes when complete page is fully loaded, including all frames, objects and images
   alert("(window).load was called - window is loaded!");
});

0

$ (window) .load , DOM ve sayfadaki tüm içerik (her şey) CSS, resimler ve çerçeveler gibi tamamen yüklendiğinde tetiklenen bir olaydır. En iyi örneklerden biri, gerçek görüntü boyutunu elde etmek veya kullandığımız herhangi bir şeyin ayrıntılarını almak istememizdir.

$ (document) .ready () , DOM yüklendikten ve komut dosyası tarafından değiştirilmeye hazır olduğunda içindeki kodun yürütülmesi gerektiğini belirtir. JQuery komut dosyasını çalıştırmak için görüntülerin yüklenmesini beklemez.

<script type = "text/javascript">
    //$(window).load was deprecated in 1.8, and removed in jquery 3.0
    // $(window).load(function() {
    //     alert("$(window).load fired");
    // });

    $(document).ready(function() {
        alert("$(document).ready fired");
    });
</script>

$ (window) .load, $ (belge) .ready () öğesinden sonra tetiklendi.

$ (window) .load 1.8'de kullanımdan kaldırıldı ve jquery 3.0'da kaldırıldı


0

$(window).loadEtkinliğin JQuery 3.x tarafından desteklenmediğini düşünüyorum


1
Gereğince belgeleri $ (pencere) .Load olay JQuery 3.0 çıkarıldı
Mathieu Viales

1
Doğru. Bu sorunu aşmak için "Olay İşleyici Eki" olarak kullanabilirsiniz: $ (window) .on ("load", function () {// .load () için Handler.});
Kean Amaral

0

DOM Düzey 2 Olaylar göre, loadolay üzerine ateş gerekiyordu documentdeğil üzerinde, window. Ancak geriye dönük uyumluluk için tüm tarayıcılarda loaduygulanır window.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.