Я разрабатываю платформу для разработки настольных приложений с веб-технологиями. В ходе этого я пытался получить некоторые документы/готовые функции, работающие с браузером, я буду интегрироваться в платформу. Вот почему я ранее задавал этот вопрос здесь на SO: javascript-framework-that-primarily-provides-just-document-onready-functionalityПроверяет готовность переполнения DOM?
Однако я не смог выбрать свой браузер (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>
EDIT/ДАЛЕЕ МЫСЛИ На the page linked to by the answer to my previous related question он заявляет, что «для Firefox и Opera простой проверки типа события определит, будет ли это DOMContentLoaded. Safari и IE будут проверять на состояние готовности документа .... Наконец, в если все остальное не удастся, событие onload выведет тыл ». Возможно, setInterval, похожий на мой setTimeout выше, может быть предпоследним курсом действий, прежде чем полагаться на onload как последнее средство? В любом случае, с выбранным встраиваемым браузером, не поддерживается ни событие DOMContentLoaded, ни document.readyState.
Ваш пример работает, потому что (как вы знаете) функция тайм-аута вызывается после разбора div, гораздо менее хакерская версия должна заключаться в том, чтобы запустить скрипт (без таймаута) после закрытия div, а не но все браузеры будут иметь доступ к dom-узлу до того, как он продолжит анализировать узлы xml/html (или, по крайней мере, доступный до того, как следующий элемент dom будет полностью прочитан и выполнен). – meandmycode
Я думаю, что ответы, которые вы получили в первые 3 часа, только читали название вопроса. Все говорят: «Нет, неплохо запускать скрипты перед тем, как DOM готов». –
Я ожидал, что вас будут решать еще более жестко;) Но чтобы получить подтверждение моих инстинктов, даже если ссылки, показывающие, что другие «избили меня до удара», это то, что я искал, и позволяет мне продолжать двигаться вниз этот путь с определенным уровнем доверия; next Я увижу, будут ли рамки CSS, такие как Peppy или Sizzle, работать с этой конкретной реализацией браузера. –