|
|
|
| Ведь вот так не работает:
<head>
<script>
document.getElementById('test').innerHTML='Hi!';
</script>
</head>
<body>
<div id='test'></div>
|
А так работает:
<head>
</head>
<body>
<div id='test'></div>
<script>
document.getElementById('test').innerHTML='Hi!';
</script>
|
| |
|
|
|
|
|
|
|
для: coloboc66
(22.09.2010 в 12:43)
| | вот так будет работать.
<head>
</head>
<body onload="document.getElementById('test').innerHTML='Hi!';">
<div id='test'></div>
|
и вот так будет работать
<head>
<script>
function hi() {
document.getElementById('test').innerHTML='Hi!';
}
</script>
</head>
<body>
<div id='test'></div>
<script>
hi();
</script>
|
в <head> не работает, потому что документ еще не загрузился и элемент с id=test не найден
правильно понимайте прочитанное, и вопросы отпадут сами собой | |
|
|
|
|
|
|
|
для: psychomc
(22.09.2010 в 12:53)
| | Но с функциями будет работать в любом месте страницы. Поэтому получается, что удобнее скрипт включать не в верх страницы, а в её низ. Так получается универсальней. Вот я и спрашиваю: "Почему рекомендуют скрипт вставлять в верх, а не в низ"??? Вниз-то универсальней. | |
|
|
|
|
|
|
|
для: coloboc66
(22.09.2010 в 12:57)
| | Вы очень сильно заблуждаетесь.проверьте этот скрипт в действии и ответьте сами на свой вопрос
<head>
</head>
<body>
<div id='test'></div>
<script>
hi();
</script>
<script>
function hi() {
document.getElementById('test').innerHTML='Hi!';
}
</script>
|
| |
|
|
|
|
|
|
|
для: psychomc
(22.09.2010 в 13:09)
| | Я веду речь о нахождении скриптов в одном общем блоке, ограниченном <script> и </script>. Так вот такой скрипт, находясь внизу, будет работать всегда, а находясь вверху (над html-элементами) - не всегда. Или я не прав? | |
|
|
|
|
|
|
|
для: coloboc66
(22.09.2010 в 14:03)
| | да, но могут возникнуть другие подводные камни.
например, что если страница загрузится не полностью, а пользователь нажмет на ссылку, вызывающую ваш скрипт, расположенный где-то внизу в той части документа, которая еще не успела загрузиться?
элементы в head загружаются до загрузки документа. событие onload срабатывает, когда браузер закончит загрузку всего документа. мне кажется нужно для начала в этих двух вещах разобраться. и в том что делает сам скрипт - какие-то действия с DOM, или что-то другое
как я понимаю, рекомендация как раз из-за специфики тега head | |
|
|
|
|
|
|
|
для: psychomc
(22.09.2010 в 14:17)
| | Ну а кто может посоветовать наиболее удобный и универсальный на его взгляд способ (место) размещения скрипта? Исходя из личного опыта? | |
|
|
|
|
|
|
|
для: coloboc66
(12.11.2010 в 13:49)
| | наиболее удобный, как мне кажется, в head.
а вообще, вот сейчас открыл "JavaScript Библия пользователя 5". там этому аспекту внимание практически не уделяется. так что размещайте где вам удобнее и не парьтесь, просто смотрите, чтобы ваши скрипты, работающие с DOM, не обращались к несуществующим элементам | |
|
|
|
|
|
|
|
для: psychomc
(12.11.2010 в 15:24)
| | Да вот возникают вопросы, например, если мне нужно использовать на разных страницах body onload с разными функциями, а body находится в heading.php. Как тогда? Или без body onload можно всегда обойтись? | |
|
|
|
|
|
|
|
для: coloboc66
(12.11.2010 в 15:32)
| | всё зависит от того, что вы собираетесь делать.
p.s вы зря загоняетесь по поводу путей и размещения скрипта | |
|
|
|
|
|
|
|
для: coloboc66
(12.11.2010 в 13:49)
| | Я много раз здесь об этом писал.
Повторю. Мне не трудно: при размещении скриптового блока в заголовке (между тегами <head>...</head>) он гарантированно исполнится ещё ДО начала отображения тела документа. Под исполнится следует понимать не только реальное действие, но и определение функций.
Если скриптовой блок находится в ином месте, то никаких гарантий правильного исполнения НЕТ.
Потому как и скрипт начнёт исполняться, и страница, не ожидая окончания работы этого скрипта, будет далее грузиться и отображаться.
И это легко проверяется. | |
|
|
|
|
|
|
|
для: АЯ
(12.11.2010 в 21:17)
| | Каждый, кто пишет что-то на JS? должен знать, что такое onload (document.ready, domready и т.п.) и что такой подход гарантирует исполнение скриптов после загрузки dom дерева.
И это легко проверяется. | |
|
|
|
|
|
|
|
для: ddhvvn
(12.11.2010 в 21:39)
| | Вам совет - когда что-то не знаете/не понимаете - Вы спрашивайте.
Спросить - оно совершенно не стыдно.
А вот ляпнуть не по делу - потом стыдно бывает. | |
|
|
|
|
|
|
|
для: АЯ
(12.11.2010 в 23:21)
| | да, да отлично, спасибо. Обязательно УЧТУ | |
|
|
|
|
|
|
|
для: coloboc66
(22.09.2010 в 12:57)
| | Лично я всегда вставлял, не "в верх", а именно в head.
Но в последнее время категорично стал вставлять все скрипты перед закрытием тега body (ну "стукнуло" меня, знаете ли =)) | |
|
|
|
|
|
|
|
для: ddhvvn
(12.11.2010 в 21:41)
| | Чтобы Вас "стукнуло" обратно в <head>, Вам надо изучить атрибут DEFER у тега <SCRIPT>. По умолчанию он имеет значение false. | |
|
|
|
|
|
|
|
для: АЯ
(12.11.2010 в 23:20)
| | мм.. что тег <SCRIPT>? о, ужас, что это?? | |
|
|
|
|
|
|
|
для: АЯ
(12.11.2010 в 23:20)
| | Я, кстати, то же, в последнее время скрипты стараюсь убирать в конец страницы (те, в которых не требуется инициализация или выполнение до загрузки контента). Лично я полагаю, что это может улучшить индексацию. Так что, дело не в незнании атрибута DEFER или события ONLOAD, а в личных предпочтениях и ситуации.
Что же касается рекомендаций в учебниках, то нужно учесть, что первые из них писались при модемном интернете, когда после загрузки и отображения содержимого, можно было бы еще долго ждать, пока загрузится скрипт. Во время этого ожидания функции не работали бы. В определенных ситуациях это могло бы быть плохо. Поэтому учебники советовали совать скрипты вверх.
А сейчас это повторяют просто по инерции.
Хотя нынче не середина девяностых и можно не переживать о скриптах так сильно.
... хотя... сейчас страницами по мегабайту уже никого не удивишь. И сотни килобайт скриптов могут приходить с достаточной задержкой, чтобы не успеть вовремя. | |
|
|
|
|
|
|
|
для: kosta_in_net
(01.12.2010 в 16:20)
| | Рекомендации авторов доисторических пособий по JS актуальны и сейчас,хотя все зависит,конечно же,от конкретной ситуации.Что с того,что скорость в полтора-два мегабита и более в секунду уже никого не удивляет?Аппетит приходит во время еды:когда-то скорости хватало только на серфинг(не забудем еще и повременку или же тарификацию за объем трафика,все это было не так уж и давно),а сейчас у меня,к примеру,ю-торрент сразу пару-тройку фильмов качает,плюс загрузка какого-нибудь большого файла через менеджер закачек идет,плюс я сам интенсивно с сайта на сайт перескакиваю.Какая тогда будет скорость загрузки страниц?Понятное дело,небольшая.Так что лучше размещать скрипты в заголовке документа - для надежности. | |
|
|
|