Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2008, 13:41
Аспирант
Отправить личное сообщение для clgs Посмотреть профиль Найти все сообщения от clgs
 
Регистрация: 19.09.2008
Сообщений: 32

оброботка события load
Доброе время суток!
Подскажите как оброботать событие load не помешая в <body> или еще куда либо, только по средством JS?

P.S. Только заумные скрипты и фразы не кидать. Я только начал учить JS.

Заранее благадарен clgs.
Ответить с цитированием
  #2 (permalink)  
Старый 19.09.2008, 15:22
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

clgs, самый простой вариант:

window.onload = function() {
  // code here
};


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

P.S.: сегодня уже давно обрабатывают onDOMContentLoaded (событие наступает, когда построенно дерево DOM; порой, намного раньше, чем onload, т.к. onload наступит, когда вся страница (включая большие изображения) бедет загружена) и его эмуляции для браузеров, которые пока не поддерживают это событие.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #3 (permalink)  
Старый 19.09.2008, 15:52
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 24.07.2008
Сообщений: 1,271

function addEvent(e,t,f){
		if (e.addEventListener) e.addEventListener(t, f, false);
		else if (e.attachEvent) e.attachEvent('on'+t, f)
	}
	function removeEvent(e,t,f){
		if (e.removeEventListener) e.removeEventListener(t, f, false);
		else if (e.detachEvent) e.detachEvent('on'+t, f)
	}

addEvent(window, 'load', any_func);
removeEvent(window, 'load', any_func);
Ответить с цитированием
  #4 (permalink)  
Старый 19.09.2008, 16:17
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

ZoNT, тогда уж оптимизировать до конца. Какой смысл каждый раз проверять, какую обработку юзать - "add..." или "attach..."? Лучше проверить это один раз при инициализации и создать свою функцию, в зависимости от браузера.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #5 (permalink)  
Старый 19.09.2008, 17:06
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 24.07.2008
Сообщений: 1,271

флаг в руки! Только это будет вешаться один раз и оптимизаия выйдет ненужная. При оптимизации по скорости ухудшится ситуация по размеру. Надо смотреть, что требуется. Если требуется один раз повесить обработчик и оди раз снять, то надо уменьшать объём. Если надо 20 раз в секунду рвешать/снимать обработчики ( ), тогда заводи быстродействующие браузерозависимые функции.
Ответить с цитированием
  #6 (permalink)  
Старый 19.09.2008, 17:15
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

ZoNT, че-т я не верю, что универсальная функция добавления/удаления слушателя (где window - это такой же слушатель) у тебя используется в коде меньше, чем 10 раз Я всего лишь привел информацию; оптимизировать или нет - твое право =)

Сообщение от ZoNT
браузерозависимые функции
функцию (она одна будет, единственное отличие - обработчик будет назначаться сразу - безо всяких проверок каждый раз)
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 19.09.2008 в 17:19.
Ответить с цитированием
  #7 (permalink)  
Старый 19.09.2008, 17:17
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 24.07.2008
Сообщений: 1,271

у меня она оптимизированна. По размеру. Так как по времени она вызывается НЕ ПОДРЯД (!!!) 10 раз, то и тормозов никогда не будет.
Ответить с цитированием
  #8 (permalink)  
Старый 19.09.2008, 17:18
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 24.07.2008
Сообщений: 1,271

гм... Вообще, если честно, то нашёл где используется максимум по два раза добавление/удаление...
Ответить с цитированием
  #9 (permalink)  
Старый 19.09.2008, 17:32
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от ZoNT
По размеру.
в данном случае, оптимизация по размеру - вторична (файл подгрузился и все, а в случае неоптимизации по скорости - постоянно будет уходить лишнее время на if-else if)

Сообщение от ZoNT
НЕ ПОДРЯД (!!!) 10 раз
да какая разница =) все равно время теряешь на проверки )
__________________
Тонкости ECMAScript
Ответить с цитированием
  #10 (permalink)  
Старый 19.09.2008, 17:35
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 24.07.2008
Сообщений: 1,271

ну, 1мс*10 = 10мс. Мне не жалко 10мс на весь просмотр страницы, так как погрешности загрузки страницы больше 10мс.

Ха-ха-ха. Файл подгрузился и всё. А если стоит антикэш и файл отдаётся более чем миллиард раз в сутки??? 100байт*1000 000 000 = 93 гига трафика в сутки!
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 22:46
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 12:51
Обработка события Deep Events/DOM/Window 12 29.07.2009 21:58
отправка файла через обработчик события submit starrich AJAX и COMET 2 13.08.2008 21:29
Dom и события кнопок Гость Events/DOM/Window 4 07.08.2008 17:53