Estou usando o código a seguir para executar algumas instruções após o carregamento da página.
<script type="text/javascript">
window.onload = function () {
newInvite();
document.ag.src="b.jpg";
}
</script>
Mas esse código não funciona corretamente. A função é chamada mesmo que algumas imagens ou elementos estejam sendo carregados. O que eu quero é chamar a função a página é carregada completamente.
javascript
html
image
Neeraj Kumar
fonte
fonte
$(window).load()
alert
função antes que a janela seja redesenhada (fazendo parecer que ela é chamada antes do carregamento)? O código parece bom e forçar os usuários a baixar grandes bibliotecas provavelmente não corrigirá esse problema ou facilitará o diagnóstico.Respostas:
isso pode funcionar para você:
ou se seu conforto com jquery,
$(document).ready()
é acionado em DOMContentLoaded, mas esse evento não está sendo acionado de forma consistente entre os navegadores. É por isso que o jQuery provavelmente implementará algumas soluções alternativas pesadas para oferecer suporte a todos os navegadores. E isso tornará muito difícil "exatamente" simular o comportamento usando Javascript simples (mas não impossível, é claro).como Jeffrey Sweeney e J Torres sugeriram, acho melhor ter uma
setTimeout
função, antes de disparar a função como abaixo:fonte
ready
não fará o que o OP solicitou.ready
é acionado quando o DOM é carregado, não após o carregamento dos elementos.load
será acionado após os elementos concluírem o carregamento / renderização.load
).setTimeout
é uma má ideia. Ele depende do carregamento da página em menos de 3 segundos (ou n segundos, dependendo do valor escolhido). Se o carregamento demorar mais, não funcionará e, se a página carregar mais rapidamente, terá que esperar sem motivo.Javascript
o mesmo para jQuery:
NOTA: - Não use a marcação abaixo (porque substitui outras declarações do mesmo tipo):
fonte
Se você pode usar o jQuery, veja load . Você pode então configurar sua função para ser executada após o término do carregamento do elemento.
Por exemplo, considere uma página com uma imagem simples:
O manipulador de eventos pode ser vinculado à imagem:
Se você precisar carregar todos os elementos na janela atual, poderá usar
fonte
load
método jQuery não vincula apenas uma função ao evento load usando Javascript? Como isso seria diferente do que o OP já está fazendo?addEventListener
vez de vincular aonload
propriedade DOM0 .Estou um pouco confuso de que o que você quer dizer com carregamento de página concluído, "DOM Load" ou "Content Load" também? Em uma página html, o carregamento pode disparar um evento após um evento de dois tipos.
Carregamento do DOM: que garante que toda a árvore do DOM seja carregada do início ao fim. Mas não garanta o carregamento do conteúdo de referência. Suponha que você tenha adicionado imagens pelas
img
tags, para que esse evento garanta que todas as imagensimg
carregadas, mas não as carregadas corretamente, sejam ou não. Para obter este evento, você deve escrever da seguinte maneira:Ou usando jQuery:
Após o DOM e o carregamento do conteúdo: que indicam o DOM e o carregamento do conteúdo também. Isso garantirá não apenas a
img
marcação, mas também todas as imagens ou outro conteúdo relativo carregado. Para obter este evento, você deve escrever da seguinte maneira:Ou usando jQuery:
fonte
DOMContentLoaded
manipulador de eventos @Hanif parece não fazer nada por mim, masload
faz.Se você quiser chamar uma função js em sua página html, use o evento onload. O evento onload ocorre quando o agente do usuário termina de carregar uma janela ou todos os quadros em um FRAMESET. Este atributo pode ser usado com elementos BODY e FRAMESET.
fonte
Dessa forma, você pode lidar com os dois casos - se a página já estiver carregada ou não:
fonte
Como alternativa, você pode tentar abaixo.
Isso funciona em todos os casos. Isso será acionado somente quando a página inteira estiver carregada.
fonte
Sua melhor aposta, até onde eu sei, é usar
A resposta nº 1 do uso do
DOMContentLoaded
evento é um retrocesso, pois o DOM será carregado antes do carregamento de todos os ativos.Outras respostas recomendam
setTimeout
que eu me oponho fortemente, pois é completamente subjetivo ao desempenho do dispositivo do cliente e à velocidade da conexão de rede. Se alguém estiver em uma rede lenta e / ou tiver uma CPU lenta, uma página poderá levar de várias a dezenas de segundos para carregar, portanto, você não poderá prever quanto temposetTimeout
será necessário.Quanto ao
readystatechange
, ele é acionado semprereadyState
que alterações que, de acordo com a MDN , ainda estiverem antes doload
evento.fonte
fonte
Se você não estiver usando nenhuma estrutura JS, este projeto é a melhor maneira de obter o estado dom pronto, com compatibilidade entre navegadores
https://github.com/ded/domready/blob/master/ready.js
fonte
Se você já usa o jQuery, tente o seguinte:
fonte
Posso dizer que a melhor resposta que encontrei é colocar um script de "driver" logo após o
</body>
comando. É a mais fácil e, provavelmente, mais universal do que algumas das soluções acima.O plano: na minha página é uma mesa. Escrevo a página com a tabela para o navegador e depois a classifico com JS. O usuário pode recorrer clicando nos cabeçalhos das colunas.
Depois que a tabela termina um
</tbody>
comando e o corpo termina, eu uso a seguinte linha para chamar o JS de classificação para classificar a tabela pela coluna 3. Tirei o script de classificação da Web para que não seja reproduzido aqui. Pelo menos no próximo ano, você pode ver isso em operação, incluindo o JS, emstatic29.ILikeTheInternet.com
. Clique em "aqui" na parte inferior da página. Isso exibirá outra página com a tabela e os scripts. Você pode vê-lo colocar os dados e classificá-los rapidamente. Eu preciso acelerar um pouco, mas o básico está lá agora.MakerMikey
fonte
Experimente este jQuery :
fonte
ready
não fará o que o OP solicitou.ready
é acionado quando o DOM é carregado, não após o carregamento dos elementos.load
será acionado após os elementos concluírem o carregamento / renderização.chamar uma função após o tempo limite de carregamento completo da página
fonte
Costumo usar o seguinte padrão para verificar se o documento está completo. A função retorna uma promessa (se você precisar oferecer suporte ao IE, inclua o polyfill ) que será resolvida assim que o documento concluir o carregamento. Ele é usado
setInterval
por baixo porque uma implementação semelhantesetTimeout
pode resultar em uma pilha muito profunda.Obviamente, se você não precisa dar suporte ao IE:
Com essa função, você pode fazer o seguinte:
fonte
Estou usando componentes da web para que funcione para mim:
fonte
Coloque seu script após a conclusão da tag body ... funciona ...
fonte