Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > onload - разница в работе, почему


Автор: Иль 4.4.2005, 18:10
Второй вариант не работает правильно, если его написать до <body>. Можно что-то сделать?
Код

<body onLoad="something()">
Код

var body=document.getElementsByTagName("BODY");
body.onload=something();

Функция something меняет отображение элементов страницы

Автор: Aliance 4.4.2005, 18:15
А до функции создания body его нет в документе?

Автор: Иль 4.4.2005, 19:26
Да. Я сначала пишу в <HEAD> в <script> эти две строчки и описываю тамже something(), а потом у меня <BODY> идет.
Видимо в этом причина.
А можно что-то сделать чтоб не писать скрипт и не присоединять .js фаил в самом <BODY>?
Конечно не хорошо спрашивать кокда есть проверенное годами решение инлайн, просто недопонимаю

Автор: Aliance 4.4.2005, 20:32
Цитата
А можно что-то сделать чтоб не писать скрипт и не присоединять .js фаил в самом <BODY>?

Хоть убейте не пойму что тут написано 8))
Если у тебя уже есть блок - поидеи нельзя его генерить )) Потом, есть, действительно, инлайн.
А вообще, body.onload - это не есть хорошо. Тогда бы уж нужно бы было сменить имя переменной, иначе скрипт путается. А вообще, читай статью «Все о событиях» [ http://forum.vingrad.ru/index.php?showtopic=32350 ]. Подведу итог:
Либо inline, либо так:
Код

window.onload = myfucntion();

Автор: Иль 4.4.2005, 20:37
Aliance, window.onload - оно. Не знал, спасибо. Сказывается моя неопытность и не smileграмотность
Чувствую, что надо 32350 опять перечитать и зазубрить smile

Автор: Иль 4.4.2005, 21:08
Все работает, но почему-то, когда я убираю строчку
Код

window.onload=alert("123");

в присоединяемый .js фаил ИЕ выдает сообщение об ошибке (не поддерживается), хотя работает.

Автор: Aliance 4.4.2005, 22:07
Т.к. файл должен сам загрузиться... вообще, IE для этого не лучший тестёр. Попробуй задержку нулевую поставить, но вообще так нельзя.

Незачто. Советую тебе потыкать в моей подписи, пришлось пожертвовать ею ради JSа =)))
Найдешь много чего интересного и полезного smile

Автор: Sardar 5.4.2005, 01:06
Да, document.body не сучествует пока одноимённый тег не будет прочтён браузером, либо страница не закончится.

Цитата
в присоединяемый .js фаил ИЕ выдает сообщение об ошибке (не поддерживается), хотя работает.

Подробнее об этом?

Кстати не советую пользоватся (body|window).onload, бывает так что баннер не загружается и браузер просто минуту простаивает. Лучше в самом конце страницы вызвать dosomething() в ручную.

Автор: Иль 5.4.2005, 06:40
Цитата(Sardar @ 5.4.2005, 01:06)
Подробнее об этом?

Я разобрался, дело в скобках после функции
Код

window.onload = myfucntion();//только ИЕ говорит об ошибке и не работает. Мазилла без проблем
window.onload = myfucntion;//работают обе бродилки


Автор: Иль 5.4.2005, 07:31
Sardar, спасибо за информацию.
Я правильно понял, лучше не <body onLoad="myfucntion()">, а именно в конце страницы?

Автор: Aliance 5.4.2005, 15:39
Иль
Тьфу ты, извени. Канечно же это моя ошибка. Не нужны скобки. Я просто копировал код не вырезая с твоего... сори =)

Автор: Sardar 5.4.2005, 17:54
Цитата
Я разобрался, дело в скобках после функции

В первом случае работать не должно вообще, т.к. функция отработает, а результат её будет записан в window.onload. Впрочем если ты результатом возвращаешь функцию, то проблем не будет smile

Цитата
Я правильно понял, лучше не <body onLoad="myfucntion()">, а именно в конце страницы?

Да, некоторые браузеры не запускают вовсе либо с задержкой событие onload если на странице есть какие то тормозные на загрузку элементы(баннеры, большие картинки и т.п.)

Автор: Иль 5.4.2005, 19:06
Цитата(Sardar @ 5.4.2005, 17:54)
Впрочем если ты результатом возвращаешь функцию, то проблем не будет

Тонко! Буду помнить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)