Я разрабатываю платформу для разработки настольных приложений с веб-технологиями. В ходе этого я пытался получить некоторые документы/готовые функции, работающие с браузером, я буду интегрироваться в платформу. Вот почему я ранее задавал этот вопрос здесь на SO: javascript-framework-that-primarily-provides-just-document-onready-functionality
Однако я не смог выбрать свой браузер (shush, его секрет;), чтобы успешно использовать функциональность, предложенную одним и единственным ответом на вышеизложенное. Поэтому, когда вы пытаетесь выяснить, что может работать, я наткнулся на следующее.
Код ниже имеет тот же эффект в этом браузере, который я использую, просто выполняя функцию после таймаута 1 миллисекунды: я могу писать в DOM, пока загружается большое изображение. Это может быть не окончательное решение для меня, я могу написать что-то конкретное, как функция DOM реализована механизмом Javascript для этого браузера.
Тем не менее, я решил посмотреть, работает ли это в стандартных браузерах, и к моему удивлению, так оно и есть! В свете этого, мой вопрос: являются ли различные реализации функций dom/ready, предоставляемые различными структурами JavaScript, просто переполняют?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
setTimeout(function() {
var txtNode = document.createTextNode("ready_yet?");
var ready_yet_el = document.getElementById("ready_yet");
ready_yet_el.appendChild(txtNode);
},1);
</script>
</head>
<body>
<div id="ready_yet"></div>
<img src="http://www.ryanmorr.com/tests/ondomready/pic.jpg" />
</body>
</html>
ИЗМЕНИТЬ/ДАЛЬНЕЙШИЕ МЫСЛИ На странице, связанной с ответом на мой предыдущий связанный вопрос, говорится: "Для Firefox и Opera простая проверка типа события определяет, DOMContentLoaded. Safari и IE будут проверять состояние готовности документов... Наконец, если все остальное не удастся, событие onload выведет заднюю часть." Возможно, setInterval, похожий на мой setTimeout выше, может быть предпоследним курсом действий, прежде чем полагаться на onload как последнее средство? В любом случае с выбранным встраиваемым браузером не поддерживается ни событие DOMContentLoaded, ни document.readyState.