Ho una pagina html con alcuni contenuti pre-renderizzati e alcuni contenuti ancora non renderizzati. Voglio visualizzare immediatamente il contenuto pre-renderizzato e quindi iniziare a mostrare il resto del contenuto. Non sto utilizzando jQuery.Esegui javascript al termine del caricamento della pagina
Vedere lo snippet seguente. Ho provato questo vari modi, tra cui iniettare il mio script prima del tag body di chiusura e fornire il mio script per popolare il DOM come callback a window.onload
, document.body.onload
e document.addEventListener('DOMContentLoaded')
. In ogni caso, la pagina non visualizza i contenuti pre-renderizzati fino a quando non viene eseguito il rendering del resto del contenuto.
<html><head></head>
<body>
<header>What it is, my doge?</header>
<div id="main"></div>
<script>
var main = document.getElementById('main');
for (var i = 0; i < 500; i++)
main.innerText += new Date();
</script>
</body>
</html>
<html><head></head>
<body>
<header>What it is, my doge?</header>
<div id="main"></div>
<script>
var main = document.getElementById('main');
document.body.onload = function() {
for (var i = 0; i < 500; i++)
main.innerText += new Date();
};
</script>
</body>
</html>
<html><head></head>
<body>
<header>What it is, my doge?</header>
<div id="main"></div>
<script>
var main = document.getElementById('main');
window.onload = function() {
for (var i = 0; i < 500; i++)
main.innerText += new Date();
};
</script>
</body>
</html>
<html><head></head>
<body>
<header>What it is, my doge?</header>
<div id="main"></div>
<script>
var main = document.getElementById('main');
document.addEventListener('DOMContentLoaded', function() {
for (var i = 0; i < 500; i++)
main.innerText += new Date();
});
</script>
</body>
</html>
Un caso che ha lavorato sia con window.setTimeout
0 timeout. Tuttavia, questo semplicemente rimanda la funzione fino a quando non rimane nulla da fare. È questa la migliore pratica, qui?
<html><head></head>
<body>
<header>What it is, my doge?</header>
<div id="main"></div>
<script>
var main = document.getElementById('main');
window.setTimeout(function() {
for (var i = 0; i < 500; i++)
main.innerText += new Date();
}, 0);
</script>
</body>
</html>
1) abbiamo bisogno di codice qui. 2) la tua descrizione non corrisponde al violino. 3) window.onload si attiverà dopo aver caricato tutto il contenuto. Tutto quello che devi fare è mettere la tua chiamata prima del tag '' – mplungjan
il violino è esattamente un esempio di ciò che descrivi e chiaramente non funziona. –
@MatthewJamesDavis Come viene reso il contenuto non reso? –