Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: window onload

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pavelbeginner
Отправлено: 25 Июля, 2013 - 09:54:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




После события ready я начинаю делать кучу различных проверок и, если проверки прошли успешно, ставлю обработчик для события window onload. Не может ли быть такого, что пока идут мои проверки уже сработает событие onload? Почему интересуюсь. Решил проверить просто в консоли, когда страница полностью загружена, вызовется ли моя ф-ци(ниже), если событие onload уже отработало:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $(window).load
  3. (
  4.     function()
  5.     {
  6.         alert(1);
  7.     }
  8. );
  9.  

В итоге ф-ция не вызывается.

Или же пока обрабатывается событие ready, событие onload не может быть вызвано?

И ещё вопрос. Всегда ли событие ready срабатывает раньше onload?
 
 Top
teddy
Отправлено: 25 Июля, 2013 - 10:14:54
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Обратите внимание, вы НЕ вызываете функцию при load, а просто ее создаете, соответственно ничего вызываться и не должно
 
 Top
Pavelbeginner
Отправлено: 25 Июля, 2013 - 10:21:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




teddy пишет:
Обратите внимание, вы НЕ вызываете функцию при load, а просто ее создаете, соответственно ничего вызываться и не должно
Ну да, я просто устанавливаю обработчик. А можно ли проверить, что событие onload уже произошло?
 
 Top
teddy
Отправлено: 25 Июля, 2013 - 10:28:57
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Pavelbeginner пишет:
Ну да, я просто устанавливаю обработчик. А можно ли проверить, что событие onload уже произошло?

Конечно можно. Вот простой пример на js:

CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.     alert("Окно не загружено");
  3.  
  4. window.onload = function()
  5. {
  6.     alert("Окно загружено");
  7. }
  8. </script>

Сначала будет выполнен тот alert, который находится за пределами window.onload
и не важно в какой части кода расположен этот алерт. Тоесть скрипт действует так: Он выполняет всё, кроме того, что находится в window.onload. После того, как весь скрипт будет выполнен, тогда он полезет в window.onload и начнет выполнять то, что описано там. Тоесть после полной загрузки всего, кроме window.onload - он выполняется в последнюю очередь.

Итог: если страница полностью и без ошибок была загружена - значит выполнился onload. Легко проверить вышеуказанным примером
 
 Top
LIME
Отправлено: 25 Июля, 2013 - 10:39:03
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




teddy смотрим сюда http://api[dot]jquery[dot]com/load-event/
Pavelbeginner ты устанавливаешь обработчик после наступления события
(Добавление)
Pavelbeginner пишет:
А можно ли проверить, что событие onload уже произошло?
установив обработчик в начале скрипта...в нем можно установить флаг например
 
 Top
Pavelbeginner
Отправлено: 25 Июля, 2013 - 10:43:09
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




LIME пишет:
teddy смотрим сюда http://api[dot]jquery[dot]com/load-event/
Pavelbeginner ты устанавливаешь обработчик после наступления события
(Добавление)
Pavelbeginner пишет:
А можно ли проверить, что событие onload уже произошло?
установив обработчик в начале скрипта...в нем можно установить флаг например

Пара вопросов:
1) Допустим, сработало событие ready. В нем я устанавливаю обработчик на событие load. И в этот момент срабатывает событие load. Будет ли обработан мой обработчик на load?
2) Не может быть такого, что событие load сработает раньше события ready?
 
 Top
LIME
Отправлено: 25 Июля, 2013 - 10:48:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Pavelbeginner пишет:
сработало событие ready
значит документ загружен...поздняк обработчики на загрузку лепить
ready и означает что документ загружен и готов к работе с DOM
значит можно смело выполнять действие не назначая обработчик
 
 Top
DelphinPRO
Отправлено: 25 Июля, 2013 - 11:49:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Pavelbeginner пишет:
Не может быть такого, что событие load сработает раньше события ready?

Не может.
Но, теоретически, они могут отработать последовательно, и вы не успеете назначить обработчик onLoad внутри onReady.
Лучше все же их назначать по отдельности. А в вашем случае, возможно, пересмотреть логику работы скрипта.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 25 Июля, 2013 - 11:57:15
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function() {
  2.    setTimeout(function(){alert('ready')},10);
  3. });
  4. $(window).load(function() {
  5.    alert('load');
  6. });
убери таймаут
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB