Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Инициация первого запуска функции (https://javascript.ru/forum/events/21423-iniciaciya-pervogo-zapuska-funkcii.html)

Nikoole 08.09.2011 18:57

Инициация первого запуска функции
 
Ребят, есть такая функция:
function updateCurrGames()
{
	$.ajax
		({
			type: "POST",
			dataType: "json",
			url: "./ajax/updateCurrGames.php",
			success: function(currGames)
			{
			     // do something
			}	
		});
}

Скрипт updateCurrGames.php может выполняться очень долго (будет "молчать" и ничего не выводить до тех пор, пока в базе не произойдут изменения (не создадут новую игру)).

в html пишу:
<body onLoad=" updateCurrGames();">

и страница очень долго грузится (на самом деле как будто ожидает ответа от updateCurrGames.php, но ведь обращение к этому файлу произошло после загрузки страницы??? (вот тут: body onLoad=" updateCurrGames();"))

Как функцию запустить после полной-полной загрузки страницы? Чтобы ожидание ответа от updateCurrGames.php было "в фоне", а не заставляло браузер ждать ответа?

С проблемой можно ознакомиться тут: http://gifbox.ru/game4/ . Попробуйте открыть страницу. Если она все-же загрузится быстро (такое иногда бывает) - попробуйте обновить.

То что страница так долго "грузится" именно по названной выше причине - это точно...

ваый 08.09.2011 19:18

Попробуйте так. onLoad=" updateCurrGames();" уберите, а перед </body> вставьте код:
setTimeout(function() {
	updateCurrGames();
}, 50);

Nikoole 08.09.2011 19:34

Спасибо за наводку. Так стало легче. Но таймаут увеличил. 50мс оказалось мало...
Другого выхода нет..?

ваый 08.09.2011 19:39

Цитата:

Сообщение от Nikoole
Спасибо за наводку. Так стало легче. Но таймаут увеличил. 50мс оказалось мало...
Другого выхода нет..?

Некоторые браузеры думают, что страница еще не загрузилась, если висит незакрытое соединение. Хром тот же. Поэтому, насколько я знаю, это единственный способ. Сам я делаю так.


Часовой пояс GMT +3, время: 08:17.