У меня есть html-страница с некоторым предварительным визуализированным контентом и некоторым пока не обработанным контентом. Я хочу немедленно отобразить предварительно обработанный контент, а затем начать рендеринг остальной части контента. Я не использую jQuery.Выполнение javascript после завершения загрузки страницы
См. Следующий фрагмент. Я пробовал это различными способами, включая ввод моего сценария перед тегом закрывающего тега и предоставление моего сценария для заполнения DOM в качестве обратного вызова window.onload
, document.body.onload
и document.addEventListener('DOMContentLoaded')
. В каждом случае страница не отображает предварительно обработанный контент до тех пор, пока остальная часть содержимого не будет отображаться.
<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>
Один случай, который работал в window.setTimeout
с 0 тайм-аут. Однако это просто отбрасывает функцию, пока нечего делать. Это лучшая практика, здесь?
<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) нам нужен код здесь. 2) ваше описание не соответствует скрипке. 3) window.onload будет запускаться после загрузки всего содержимого. Все, что вам нужно сделать, это поместить ваш вызов до '