Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как поставить обработчик события на загрузку страницы? (https://javascript.ru/forum/events/17388-kak-postavit-obrabotchik-sobytiya-na-zagruzku-stranicy.html)

mister_maxim 17.05.2011 15:31

как поставить обработчик события на загрузку страницы?
 
Без jQuery и других библиотек.
Без прописки в теге body onload='iniit()'
--------
Вот мой пробный пример до тега body:
wait=function(f, t, th, reg)
		{
			var osi={};
			if(!th)th=null;
			var fi=function(){
				if(f.call(th,reg))
				{	
					clearInterval(osi.si);
				};
			};
			osi.si=setInterval(fi,t);
		};		
	wait(function(){var b=document.getElementsByTagName('BODY')[0]; if(b){setTimeout(init,0);return true;};return false;},10);

Однако я сомневаюсь, что как только станет доступно document.getElementsByTagName('BODY')[0], то это и будет означать, что событие onload уже прошло. Так ли это?
Если нет, то как САБЖ?

ps. И такой вопрос: обязательно ли событие onload страницы наступает позже чем может быть получен iframe.contentDocument или iframe.contentWindow.document пустого iframe находящегося на страницы?

Starkua 17.05.2011 15:36

Есть такая, очень маленькая либа https://github.com/ded/domready

Skipp 17.05.2011 15:42

вот пример

Starkua 17.05.2011 15:46

Цитата:

Сообщение от Skipp (Сообщение 105094)

Делать проверку по названию браузера и его версии - рискованно. Вышла новая версия, с новым api - и все, код не работает.
Нужно проверять наличие соответствующих методов, тогда все будет ок ;)

Skipp 17.05.2011 15:53

методы тоже иногда меняются:)
ну а вообще согласен, я не давал готового решения я привёл только пример.

mister_maxim 17.05.2011 21:12

Спасибо, Skipp, и Starkua, понял что код в обоих случаях не совсем простой из за кроссбраузерности.
ready.js от Starkua, как то для меня странно закодировано, без комментариев, боюсь даже использовать.

Aetae 17.05.2011 21:18

http://javascript.ru/unsorted/top-10...ions#9-onready
Или тупо window.onload и не выё*.)

Starkua 17.05.2011 21:22

mister_maxim, советую научиться пользоваться гитхабом - там очень много нужных либ. По моей ссылке есть и минифицированная и нормальные версии. Вот читабельная https://github.com/ded/domready/blob/master/ready.js


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