Estou executando um script externo, usando um <script>
interior <head>
.
Agora, como o script é executado antes do carregamento da página, não consigo acessar <body>
, entre outras coisas. Eu gostaria de executar algum JavaScript depois que o documento foi "carregado" (HTML totalmente baixado e na RAM). Existem eventos nos quais eu possa me conectar quando o script for executado, que serão acionados no carregamento da página?
javascript
html
dom-events
pageload
O Flash
fonte
fonte
document.onload=
não é invasivo pt.wikipedia.org/wiki/Unobtrusive_JavaScriptManeira razoavelmente portátil e sem estrutura de fazer com que seu script defina uma função para executar no tempo de carregamento:
fonte
Lembre-se de que o carregamento da página possui mais de um estágio. Btw, isso é JavaScript puro
"DOMContentLoaded"
Este evento é acionado quando o documento HTML inicial tiver sido completamente carregado e analisado , sem aguardar que as folhas de estilo, imagens e sub-quadros terminem de carregar. Nesta fase, você pode otimizar programaticamente o carregamento de imagens e css com base no dispositivo do usuário ou na velocidade da largura de banda.
Executa após o carregamento do DOM (antes de img e css):
"carga"
Um evento muito diferente, load , deve ser usado apenas para detectar uma página totalmente carregada . É um erro incrivelmente popular usar o load em que DOMContentLoaded seria muito mais apropriado, portanto, tenha cuidado.
Exectues depois que tudo é carregado e analisado:
Recursos MDN:
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded https://developer.mozilla.org/en-US/docs/Web/Events/load
Lista MDN de todos os eventos:
https://developer.mozilla.org/en-US/docs/Web/Events
fonte
window.onload = ...
pensar que meu script esperaria até que tudo fosse baixado completamente antes da execução, mas parece quewindow.onload
realmente se comportadocument.addEventListener("DOMContentLoaded", ...
, enquanto o quewindow.addEventListener("load", ...
realmente espera para que tudo seja baixado completamente. Eu teria pensado quewindow.onload
deveria ser equivalente aowindow.addEventListener("load", ...
invés dedocument.addEventListener("DOMContentLoaded", ...
?? Obtive o mesmo resultado no Chrome e no FF.Você pode colocar um atributo "onload" dentro do corpo
Ou, se você estiver usando jQuery, poderá fazer
Espero que responda sua pergunta.
Observe que o $ (window) .load será executado depois que o documento for renderizado em sua página.
fonte
Se os scripts forem carregados dentro
<head>
do documento, é possível usar odefer
atributo na tag script.Exemplo:
De https://developer.mozilla.org :
fonte
Aqui está um script com base no carregamento adiado de js após o carregamento da página,
Onde coloco isso?
O que isso faz?
Aqui está um exemplo do código acima - Adiar a renderização de JS
Eu escrevi isso com base no carregamento adiado do conceito de google pagespeed do javascript e também originário deste artigo Adiar o carregamento do javascript
fonte
Veja enganchar
document.onload
ou no jQuery$(document).load(...)
.fonte
Violino de trabalho em
<body onload="myFunction()">
fonte
http://www.feedthebot.com/pagespeed/defer-loading-javascript.html
fonte
Se você estiver usando jQuery,
$(function() {...});
é equivalente a
$(document).ready(function () { })
ou outra mão curta:
$().ready(function () { })
Consulte Em qual evento o JQuery $ function () é acionado? e https://api.jquery.com/ready/
fonte
veja aqui: http://msdn.microsoft.com/en-us/library/ie/ms536957(v=vs.85).aspx
fonte
Às vezes, em páginas mais complexas, acho que nem todos os elementos foram carregados pela janela de tempo. O onload é acionado. Se for esse o caso, adicione setTimeout antes que sua função demore um momento. Não é elegante, mas é um hack simples que se processa bem.
torna-se...
fonte
Basta definir
<body onload="aFunction()">
que será chamado após o carregamento da página. Seu código no script é então incluído poraFunction() { }
.fonte
Esse código funciona bem.
Mas o
window.onload
método tem várias dependências. Portanto, pode não funcionar o tempo todo.fonte
Usando a biblioteca YUI (eu adoro):
Portátil e bonito! No entanto, se você não usar o YUI para outras coisas (consulte o documento), diria que não vale a pena usá-lo.
Nota: para usar este código, você precisa importar 2 scripts
fonte
Existe uma documentação muito boa sobre como detectar se o documento foi carregado usando Javascript ou Jquery.
Usando o Javascript nativo, isso pode ser alcançado
Isso também pode ser feito dentro do intervalo
Por Mozilla
Usando o Jquery Para verificar apenas se o DOM está pronto
Para verificar se todos os recursos estão carregados, use window.load
fonte
Use este código com a biblioteca jQuery, isso funcionaria perfeitamente.
fonte
.ready () funciona melhor para mim.
.load () funcionará, mas não esperará até que a página seja carregada.
Não funciona para mim, quebra o script ao lado do inline. Também estou usando o jQuery 3.2.1 junto com alguns outros garfos do jQuery.
Para ocultar minha sobreposição de carregamento de sites, use o seguinte:
fonte
Javascript
o mesmo para jQuery:
NOTA: - Não use a marcação abaixo (porque substitui outras declarações do mesmo tipo):
fonte
Como Daniel diz, você pode usar document.onload.
As várias estruturas javascript (jQuery, Mootools, etc.) usam um evento personalizado 'domready', que eu acho que deve ser mais eficaz. Se você estiver desenvolvendo com javascript, eu recomendo explorar uma estrutura, eles aumentam enormemente sua produtividade.
fonte
fonte
Meu conselho é usar o
asnyc
atributo para a tag de script que ajuda você a carregar os scripts externos após o carregamento da páginafonte
defer
, como o @Daniel Price mencionado?use a função onload de execução automática
fonte
onload
manipuladores usando essa abordagem. Em vez disso, você deve adicionar o ouvinte.