- 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> тэга может не существовать?!
inkanus-gray 01.10.2014 07:07 # +2
volter9 01.10.2014 07:09 # +1
inkanus-gray 01.10.2014 07:12 # +2
Только где же в 2014 году найти такой браузер?
volter9 01.10.2014 07:20 # 0
А читал истории про студентов которые учились писать JS специально доя таких динозавров, как Вы думаете? Это так?
istem 02.10.2014 21:26 # +1
А вообще, хотя бы, if ( !document.body ) setTimeout( callback, ннадцать_мс );
cyperh 01.10.2014 08:00 # +1
<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 но это все лирика.
Qwertiy 01.10.2014 11:10 # 0
А вообще, в каких-то браузерах body и head в document не было, надо было тащить через селектор.
PS:
cyperh 01.10.2014 12:25 # 0
Наверное в ранних версиях IE.
Lokich 01.10.2014 16:03 # 0
inkanus-gray 01.10.2014 16:23 # 0
bormand 02.10.2014 08:11 # +1
tirinox 02.10.2014 12:09 # +1
bormand 02.10.2014 12:24 # +3
tirinox 02.10.2014 12:26 # +2
inkanus-gray 02.10.2014 13:23 # +1
Во-вторых, новая Винда встанет не на любое железо (ну не ставить же Линукс, как бомжи какие-то).
В-третьих, Хром не нужен.
tirinox 02.10.2014 13:26 # 0
inkanus-gray 02.10.2014 13:35 # −1
tirinox 02.10.2014 13:41 # +2
inkanus-gray 02.10.2014 13:46 # −1
roman-kashitsyn 02.10.2014 13:45 # 0
Gopher же
inkanus-gray 02.10.2014 13:50 # 0
Vasiliy 02.10.2014 14:27 # 0
bormand 02.10.2014 16:00 # 0
А XP раздавала? :)
bormand 02.10.2014 16:06 # 0
И слава богу... А то недавно пришлось с болью в сердце смотреть, как над компом с 256 метрами оперативки издеваются Антивирус, 1С и Браузер...
Зато XP на нем идет, да. Только толку от нее, если работать на таком компе всё равно невозможно?
Qwertiy 01.10.2014 21:25 # +1
Это с какого перепуга? Он же выполняется немедленно. Запусти и проверь - первый скрипт выводит null.
http://learn.javascript.ru/traversing-dom#корень-documentelement-и-body
UPDATE: Невнимательно прочитал. Да, тот, который на ready, найдёт, а тот, который без - нет.
> Это в каких таких браузерах?)
Вроде IE старые.
document.body = document.body || document.getElementsByTagName('body')[0];