Я бы предположил, что это будет отличаться между браузерами.
Одно из решений может заключаться в том, чтобы протестировать его, разместив скрипт сразу в теге открытия <body>
, а затем запустив код с интервалом, чтобы добавить класс.
<body>
<script>
function add_class() {
if(document.body)
document.body.className = 'some_class';
else
setTimeout(add_class, 10); // keep trying until body is available
}
add_class();
</script>
<!-- rest of your elements-->
</body>
JQuery делает нечто подобное внутренне для решения конкретной IE ошибка.
Нет гарантии, что элементы-потомки не будут загружены, так как снова это будет зависеть от того, когда конкретная реализация сделает доступным body
.
Here's the source где JQuery схожий подход, проверка на существование body
в главном jQuery.ready
обработчиком, и повторно вызывая jQuery.ready
через setTimeout
если body
не доступен.
И here's an example, чтобы увидеть, может ли ваш браузер видеть элемент <body>
в скрипте в верхней части элемента перед другими элементами. (Открыть консоль)
Here's the same example без необходимости в консоли.
body.onload = function() {...}? – user544262772
Ожидает ли событие body.onload, чтобы дети были загружены? – supertopi
Зачем вам это нужно? – qwertymk