Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: событие onload
 
 автор: btr   (13.01.2013 в 15:16)   письмо автору
 
 

Здравствуйте
прошу помочь: объяснить или ссылку дать для прочтения

значит, итак:
насколько я понял из соотв. литературы, присвоить обработчик события (с помощью js) элементу можно только после того, как элемент будет загружен.
гарантия загруженности ВСЕХ элементов является событие onload.

ВОПРОС №1: какого объекта? document? window?
ВОПРОС №2: в каком месте документа надо присваивать обработчик этого события?

пс: читаю книжку флэнагана JS. книга очень толковая, но, наверное, я в ней запутался... не могу найти ответа на этот вопрос. в инете в основном пишут то же самое, упирая на вещи, мне понятные...

  Ответить  
 
 автор: ЯСА   (14.01.2013 в 10:24)   письмо автору
 
   для: btr   (13.01.2013 в 15:16)
 

событие onload поддерживается следующими объектами и тегами:
-- объект window*
-- тег <frameset> (+)
-- тег <frame> (+)
-- тег <iframe> (+)

-- тег <script> (если указан src) (+)
-- тег <link> (+)

-- тег <body> как объект document.body**
-- тег <img> (+)
-- объект Image*** (+)

-- тег <embed>
-- тег <applet>

для тегов инструкция для этого события должна прописываться непосредственно в теге (для первой загрузки),
либо прописываться после первой загрузки элемента как новое событие для повторных загрузок содержимого

исключение ** тег <body> (он же объект document.body) -- повторное новое событие onload в этом теге невозможно

если теги создаются динамически методом createElement (), то инструкция для первой загрузки оформляется на "виртуале", т.е. ещё до "приживления" тега на странице методами appendChild () и insertBefore ()
--------

* для объекта window - одноразовую инструкцию можно определить в любом скриптовом блоке на странице (в т.ч. даже до тега <html> и после тега </html>)
*** для объекта Image - инструкции (несколько раз) можно определить после создания этого объекта
--------

теги и объекты, отмеченные (+), поддерживают событие onerror как альтернативу событию onload

  Ответить  
 
 автор: btr   (14.01.2013 в 12:55)   письмо автору
 
   для: ЯСА   (14.01.2013 в 10:24)
 

большое спасибо, заучу. Не могли бы Вы ответить на мой вопрос по поводу insertBefore? непонятно, я чтото не так делаю?, или не с тем? или не там? :О

  Ответить  
 
 автор: ЯСА   (14.01.2013 в 17:48)   письмо автору
 
   для: btr   (14.01.2013 в 12:55)
 

заучивать не надо

надо попытаться всё это логически представить,
зная несколько аксиом:

1) объекты window и document создаются сразу при открытии окна (даже пустого)

2) объект document.body создаётся сразу при обнаружении браузером первого нехедерного тега (т.е. даже если вы тег <body> не пропишете, браузер его САМ создаст)

-- особенно наглядно эти два пункта видны при прописывании ифрейма без атрибута SRC

<body>
<iframe name="myIFR" onload="alert ('yes')"></iframe> <!-- SRC не указан, но alert сработает -->

<script>
alert (typeof frames.myIFR);               // "object", но не "undefined" -- окно window внутри ифрейма УЖЕ СУЩЕСТВУЕТ
alert (typeof frames.myIFR.document);      // "object", но не "undefined" -- document внутри окна window внутри ифрейма УЖЕ СУЩЕСТВУЕТ
alert (typeof frames.myIFR.document.body); // "object", но не "undefined" -- тело документа внутри ифрейма УЖЕ СУЩЕСТВУЕТ
</script>
</body>

3) атрибут SRC во всех тегах является read-write, т.е. программно можно SRC изменять, и, следовательно, заново загружать содержимое элемента (в т. ч. можно указать несуществующее значение для SRC - отсюда onerror)

4) всякий тег становится объектом в DOM'e сразу после своего появления на странице -- почитайте http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=88634#post528362

  Ответить  
 
 автор: btr   (14.01.2013 в 20:52)   письмо автору
 
   для: ЯСА   (14.01.2013 в 17:48)
 

еще раз спасибо. очень доходчиво :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования