Комментарии от this question заставили меня задуматься. Когда срабатывает функция $(document).ready()
? Очевидным ответом будет «когда документ готов», но когда это точно?
Например, if I turned output buffering on and flushed my output while PHP continued executing, не так ли отправить вывод в браузер? Итак, каким образом документ может быть готов до того, как скрипт PHP завершит выполнение, или событие подождало, пока запрос не будет завершен?
EDIT:
ответы, кажется, в основном согласны, что событие срабатывает, когда клиент думает, что он готов.
Чтобы получить лучшее понимание (что я должен, вероятно, сделали в первую очередь), я просто настроить тест:
<?php ob_start(); ?>
<html>
<head>
<script type="text/javascript" src="lib/js/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert("READY");
});
</script>
</head>
<body>
<?php
ob_flush();
for ($i=0; $i<999999; $i++) {
echo "HELLO$i\n";
ob_flush();
}
?>
</body>
</html>
Результатом было то, что в этом примере, начал содержимое с указанием на , но предупреждение не было до тех пор, пока цикл не был завершен, или время ожидания скрипта (30 секунд).
Для точки в зависимости от того, какой браузер вы используете, я попытался вставить это в моем цикле:
if ($i == 99) {
echo "</body></html>";
}
И Chrome, казалось, автоматически исправит его, поместив эти теги в конце страницы (как показано в инспекторе веб-разработчиков). Просмотр источника страницы показал его посередине, где я его повторил.
ready() всегда после того, как php будет распечатывать страницу html. другими словами, это всегда после отправки «