jQuery - Quais são as diferenças entre $ (document) .ready e $ (window) .load?

319

Quais são as diferenças entre

$(document).ready(function(){
 //my code here
});

e

$(window).load(function(){
  //my code here
});

E quero ter certeza de que:

$(document).ready(function(){

}) 

e

$(function(){

}); 

e

jQuery(document).ready(function(){

});

são os mesmos.

Você pode me dizer que diferenças e semelhanças entre eles?

hungneox
fonte
11
possível duplicata de window.onload vs document.ready
Pranay Rana
1
lolz, ele copiou do mesmo link depois de mim (sem mencionar) e foi aceito: P Lição aprendida, não explique para os desenvolvedores, eles gostam de ver o código: D
Rifat
@Rifat Sinto muito, mas o formato do Oyeme é mais fácil de ler> _ <
hungneox 6/12/11
1
@eureka Tudo bem. Você não precisa se desculpar :) Nós dois tentamos ajudá-lo. Mas, ele deveria ter mencionado o crédito: P
Rifat
possível duplicata de window.onload vs. body.onload vs. document.onready
abóbada

Respostas:

432

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


$(window).load(function() {
  // executes when complete page is fully loaded, including all frames, objects and images
  console.log("window is loaded");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Versão da consulta 3.0

Alterações recentes: .load (), .unload () e .error () removidos

Esses métodos são atalhos para operações de eventos, mas tinham várias limitações de API. O .load()método de evento entrou em conflito com o .load() método ajax . O .error()método não pode ser utilizado com window.onerror por causa da maneira como o método DOM é definido. Se você precisar anexar eventos por esses nomes, use o .on()método, por exemplo, mude $("img").load(fn)para $(img).on("load", fn). 1

$(window).load(function() {});

Deve ser alterado para

$(window).on('load', function (e) {})

Estes são todos equivalentes:

$(function(){
}); 

jQuery(document).ready(function(){
});

$(document).ready(function(){
});

$(document).on('ready', function(){
})
Oyeme
fonte
25
aponte para postagem original: 4loc.wordpress.com/2009/04/28/documentready-vs-windowload
Pranay Rana
O último é preferido, pois os outros são preteridos. Além disso, o último (eu acredito) permite especificamente vários manipuladores de modo que você pode ter vários scripts todos têm um .em ( 'pronto' ...) manipulador
Evan Langlois
6
.on( "ready", handler )- obsoleto a partir do jQuery 1.8. Veja api.jquery.com/ready
TeNNoX 3/16/16
Qual é a diferença entre $(document).readye $(document).load?
Renatov
$ (document) .ready - "executa quando o Documento HTML é carregado e o DOM está pronto" - portanto, é executado imediatamente após o carregamento do documento, sem aguardar o carregamento de fotos, quadros, objetos ou o que ainda não foi carregado . $ (document) .load - "executa quando a página completa é totalmente carregada, incluindo todos os quadros, objetos e imagens" - portanto, espera que TUDO seja carregado - documento, DOM, imagens, scripts, quadros, objetos, o que for - e depois e só então será executado.
pazof 28/01/19
29

document.readyé um evento jQuery, é executado quando o DOM está pronto, por exemplo, todos os elementos existem para serem encontrados / usados, mas não necessariamente todo o conteúdo.
window.onloaddispara mais tarde (ou ao mesmo tempo nos piores / com falha) quando as imagens são carregadas. Portanto, se você estiver usando dimensões de imagem, por exemplo, geralmente deseja usá-lo.

Leia também uma pergunta relacionada:
Diferença entre as funções $ (window) .load () e $ (document) .ready ()

Com um grande coração
fonte
11

No documento da API jQuery

Enquanto o JavaScript fornece o loadevento para a execução do código quando uma página é renderizada, esse evento não é acionado até que todos os ativos, como imagens, tenham sido completamente recebidos. Na maioria dos casos, o script pode ser executado assim que a hierarquia do DOM for totalmente construída. O manipulador passado para .ready()é garantido para ser executado depois que o DOM estiver pronto; portanto, este é geralmente o melhor lugar para conectar todos os outros manipuladores de eventos e executar outro código jQuery. Ao usar scripts que dependem do valor das propriedades de estilo CSS, é importante fazer referência a folhas de estilo externas ou incorporar elementos de estilo antes de fazer referência aos scripts.

Nos casos em que o código depende de ativos carregados (por exemplo, se as dimensões de uma imagem são necessárias), o código deve ser colocado em um manipulador para o loadevento.


Resposta à segunda pergunta -

Não, eles são idênticos desde que você não esteja usando o jQuery no modo sem conflito.

Rifat
fonte
10

Essas três funções são iguais.

$(document).ready(function(){

}) 

e

$(function(){

}); 

e

jQuery(document).ready(function(){

});

aqui $é usado para definir jQuerycomo $= jQuery.

Agora a diferença é que

$(document).readyé um evento jQuery que é disparado quando DOMcarregado, portanto, quando a estrutura do documento está pronta.

$(window).load o evento é acionado depois que todo o conteúdo é carregado, como a página contém imagens, css etc.

Bharat Chodvadiya
fonte
5

A diferença entre $(document).ready()e $(window).load()funções é que o código incluído $(window).load()será executado assim que a página inteira (imagens, iframes, folhas de estilo, etc.) for carregada, enquanto o evento ready do documento é acionado antes que todas as imagens, iframes etc. sejam carregadas, mas depois do próprio DOM inteiro está pronto.


$(document).ready(function(){

}) 

e

$(function(){

});

e

jQuery(document).ready(function(){

});

Não há diferença entre os três códigos acima.

Eles são equivalentes, mas você pode enfrentar conflito se qualquer outra estrutura JavaScript usar o mesmo símbolo de dólar $ como nome do atalho.

jQuery.noConflict();
jQuery.ready(function($){
 //Code using $ as alias to jQuery
});
Shubham Kumar
fonte
? Diferença entre jQuery (document) .ready (function () {e jQuery (document) .ready (function ($) {Observe o $ dentro dos parênteses.
MarcoZen
3

O evento ready é sempre executado na única página html carregada no navegador e as funções são executadas .... Mas o evento load é executado no momento em que todo o conteúdo da página é carregado no navegador para a página ... .. podemos usar $ ou jQuery quando usamos o método noconflict () nos scripts jquery ...

Kumar Immanuel
fonte
2
$(document).ready(function(e) { 
    // executes when HTML-Document is loaded and DOM is ready  
    console.log("page is loading now"); 
});

$(document).load(function(e) { 
    //when html page complete loaded
    console.log("completely loaded"); 
});
Pavan Hukerikar
fonte
2
Por favor, explique sua resposta também.
Blackbeard
0

$ (window) .load é um evento que é acionado quando o DOM e todo o conteúdo (tudo) na página são totalmente carregados, como CSS, imagens e quadros. Um melhor exemplo é se queremos obter o tamanho real da imagem ou obter os detalhes de qualquer coisa que a usamos.

$ (document) .ready () indica que o código nele precisa ser executado assim que o DOM for carregado e pronto para ser manipulado pelo script. Não vai esperar o carregamento das imagens para executar o script jQuery.

<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 disparado após o $ (document) .ready ().

$(document).ready(function(){

}) 
//and 
$(function(){

}); 
//and
jQuery(document).ready(function(){

});

Acima de 3 são iguais, $ é o nome alternativo de jQuery, você pode enfrentar conflitos se qualquer outra estrutura do JavaScript usar o mesmo símbolo de dólar $. Se você enfrentar conflitos, a equipe jQuery fornecerá uma solução sem conflitos, leia mais.

$ (window) .load foi descontinuado no 1.8 e removido no jquery 3.0

Srikrushna
fonte