- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
function init() {
if (!document.body) return;
var body = document.body;
var html = document.documentElement;
// ...
}
// ...
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+152
function init() {
if (!document.body) return;
var body = document.body;
var html = document.documentElement;
// ...
}
// ...
https://gist.github.com/galambalazs/6477177/
Плавный скролл, я вот только не пойму, почему "if (!document.body) return;"?
Типа <body> тэга может не существовать?!
Только где же в 2014 году найти такой браузер?
А читал истории про студентов которые учились писать JS специально доя таких динозавров, как Вы думаете? Это так?
А вообще, хотя бы, if ( !document.body ) setTimeout( callback, ннадцать_мс );
<html>
<head>
<title></title>
<script type="text/javascript" src="jquery-2.1.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
console.log(document.body);
});
</script>
<script type="text/javascript">
(function(){
console.log(document.body);
})();
</script>
</head>
<body>
<script type="text/javascript">
(function(){
console.log(document.body);
})();
</script>
</body>
</html>
Из-за замыкания функция вызывается сразу, когда начинается загрузка страницы, объект body еще не существует на этапе вызова функции.
По теме. Body может вовсе отсутствовать http://htmlbook.ru/html/frameset но это все лирика.
А вообще, в каких-то браузерах body и head в document не было, надо было тащить через селектор.
PS:
Наверное в ранних версиях IE.
Во-вторых, новая Винда встанет не на любое железо (ну не ставить же Линукс, как бомжи какие-то).
В-третьих, Хром не нужен.
Gopher же
А XP раздавала? :)
И слава богу... А то недавно пришлось с болью в сердце смотреть, как над компом с 256 метрами оперативки издеваются Антивирус, 1С и Браузер...
Зато XP на нем идет, да. Только толку от нее, если работать на таком компе всё равно невозможно?
Это с какого перепуга? Он же выполняется немедленно. Запусти и проверь - первый скрипт выводит null.
http://learn.javascript.ru/traversing-dom#корень-documentelement-и-body
UPDATE: Невнимательно прочитал. Да, тот, который на ready, найдёт, а тот, который без - нет.
> Это в каких таких браузерах?)
Вроде IE старые.
document.body = document.body || document.getElementsByTagName('body')[0];