Комментарии 28
за переводы и само изложение спасибо, особенно за Safari
В mootools, например, есть такое событие: OnDomReady
Спасибо за перевод и за красивое оформление, но тема не очень актуальна, так как во всех библиотеках есть готовое решение, например, в jQuery есть конструкция
$(document).ready.
Добавлю, что использование библиотеки сделает скрипт переносимым - он будет работать на практически на всех браузерах.
cпасибо! увлекательная статья
__________
не понимаю почему для IE-специфичный код обёрнут в cc-конструкцию, вместо использования проверки юзер агента, ведь остальные браузеры не понимают все эти директивы "спрятанные" в комментариях и следующий код выполнится на всех браузерах, что хоть и не страшно, но как-то некошерно:
/*@cc_on @*/
/*@if (@_win32)
document.write("");
/*@end @*/
разве не так?
P.S. всё-же JS как он есть это ... нечто совершенно особенное ;-)
__________
не понимаю почему для IE-специфичный код обёрнут в cc-конструкцию, вместо использования проверки юзер агента, ведь остальные браузеры не понимают все эти директивы "спрятанные" в комментариях и следующий код выполнится на всех браузерах, что хоть и не страшно, но как-то некошерно:
/*@cc_on @*/
/*@if (@_win32)
document.write("");
/*@end @*/
разве не так?
P.S. всё-же JS как он есть это ... нечто совершенно особенное ;-)
статья хорошая, вот только нужна ли она, отложенная загрузка? на моем опыте при отложенной загрузке пользователи начинают орать, что у них эта или эта кнопка не работа, что сайт глючит и лагает итп. Уж пусть лучше подаждут лишние пол сикунды, чем будут верещать, что мой сайт хреново работает
При прочих равных согласен с примечанием автора и использовал бы
...Такое решение, например, на странице проекта script.aculo.us.
<script type="text/javascript">
// <![CDATA[
init();
// ]]>
</script>
</body>
...
Что насчёт такого:
var domReadyI = window.setInterval(function(){
if(document.getElementsByTagName('body')[0])
{
window.clearInterval(domReadyI);
window.callEvent('domready');
}
}, 200);
p.s. подскажите, возможно ли на хабре подсвечивать код?
var domReadyI = window.setInterval(function(){
if(document.getElementsByTagName('body')[0])
{
window.clearInterval(domReadyI);
window.callEvent('domready');
}
}, 200);
p.s. подскажите, возможно ли на хабре подсвечивать код?
НЛО прилетело и опубликовало эту надпись здесь
Просто посмотрите как это сделано в jquery, там же есть вариант для IE
А чем плох вариант написать в самом конце страницы такой код? Сработает ведь.
.......
init();
.......
init();
Присутствие этого атрибута указывает IE, что загрузку скрипта нужно отложить до тех пор, пока не загрузится DOM
Ну как раз загрузка будет идти параллельно. defer нужен как раз для того, чтобы браузер при отрисовке документа не ждал загрузки внешнего сценария. Исполнение да, будет после.
Интересно много сайтов так программирует.
на 21 строке полного решения document.write("....") — нужно писать в одну строчку. Иначе ИЕ выдает ошибку и ничего не работает. Просто, будьте внимательны=)
Написано хорошо, только непонятно как сделать новичку.
У меня есть скрипт (предоставлен сторонним сайтом), он содержит в себе запрос на сторонний сайт для получения списка книг по моему ключевому слову. Скрипт содержит в себе document.write и вызывается в середине страницы, чем блокирует загрузку остальной части.
Вижу решение в том, чтобы перенести скрипт в конец страницы, а потом полученный от его работы текстовый блок передвинуть куда нужно. Только вот как его передвинуть? Какой код использовать?
И еще читал, что нужно заменить document.write на innerHTML. Как?
У меня есть скрипт (предоставлен сторонним сайтом), он содержит в себе запрос на сторонний сайт для получения списка книг по моему ключевому слову. Скрипт содержит в себе document.write и вызывается в середине страницы, чем блокирует загрузку остальной части.
Вижу решение в том, чтобы перенести скрипт в конец страницы, а потом полученный от его работы текстовый блок передвинуть куда нужно. Только вот как его передвинуть? Какой код использовать?
И еще читал, что нужно заменить document.write на innerHTML. Как?
хмм, видимо, решение настолько тривиальное, что о нем просто один абзац
webo.in/articles/habrahabr/44-unobtrusive-advertisements-basics/
Собственно, эта логика уже добавлена в Web Optimizer
code.google.com/p/web-optimizator/
там только небольшой набор информеров, которые нужно «двигать»
«Если вам не удается избежать вызовов document.write любыми путями помещайте их в самый низ документа. Возможно, стоит рассмотреть вариант, когда после загрузки страницы блок с контекстной рекламой перемещается в необходимое место, а все это время он скрыт где-нибудь в подвале документа и не влияет на скорость загрузки основного содержания.»
webo.in/articles/habrahabr/44-unobtrusive-advertisements-basics/
<div id='initial_location_of_something' style='display:none'> .. здесь должен быть расположен информер / реклама / счетчик ... </div> ... <div id='to_move_somewhere' style='display:none'> ... здесь идет код вызова внешнего скрипта, script src='...' ... </div> <script type='text/javascript'> document.getElementById('initial_location_of_something').innerHTML = document.getElementById('to_move_somewhere').innerHTML; document.getElementById('initial_location_of_something').style='block'; </script>
Собственно, эта логика уже добавлена в Web Optimizer
code.google.com/p/web-optimizator/
там только небольшой набор информеров, которые нужно «двигать»
Благодарю, сработало.
sunnybear, вам бы написать книгу для чайников.
Тоже самое, что в книге «Разгони свой сайт», только по простому.
sunnybear, вам бы написать книгу для чайников.
Тоже самое, что в книге «Разгони свой сайт», только по простому.
а смысл? дохода с книги никакого, а писать «быдло-литературу» я не хочу :)
Хотя может быть, книжка «Реактивные веб-сайты» больше понравится, там больше практических примеров. На днях должны выложить первую версию.
speedupyourwebsite.ru/books/reactive-websites/
Хотя может быть, книжка «Реактивные веб-сайты» больше понравится, там больше практических примеров. На днях должны выложить первую версию.
speedupyourwebsite.ru/books/reactive-websites/
А меня лично интересует как после загрузки DOM, добавить в head ссылку на внешний скрип (с этим я разобрался) и как в определённый див добавить скрипт, который будет вызывать некую функцию, которая определена в том скрипте, который я добавил в head раздел после загрузки DOM
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Практический JS: «отложенная» загрузка