|
|
|
| Здравствуйте
прошу помочь: объяснить или ссылку дать для прочтения
значит, итак:
насколько я понял из соотв. литературы, присвоить обработчик события (с помощью js) элементу можно только после того, как элемент будет загружен.
гарантия загруженности ВСЕХ элементов является событие onload.
ВОПРОС №1: какого объекта? document? window?
ВОПРОС №2: в каком месте документа надо присваивать обработчик этого события?
пс: читаю книжку флэнагана JS. книга очень толковая, но, наверное, я в ней запутался... не могу найти ответа на этот вопрос. в инете в основном пишут то же самое, упирая на вещи, мне понятные... | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: ЯСА
(14.01.2013 в 10:24)
| | большое спасибо, заучу. Не могли бы Вы ответить на мой вопрос по поводу insertBefore? непонятно, я чтото не так делаю?, или не с тем? или не там? :О | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: ЯСА
(14.01.2013 в 17:48)
| | еще раз спасибо. очень доходчиво :) | |
|
|
|