Добавить "body" еще один обработчик "onload"

Задача: на javascript добавить документу обработчик события load, при этом не перезаписав возможный предыдущий и не указывая атрибут onload="".

Решение: сохранить старый обработчик следующим образом:

var oldHandler = window['onload'];

А затем добавить старый (если есть) и новый вместе:

window['onload'] = function() {
   if(typeof(oldHandler) == 'function') {
      oldHandler(); // Старый обработчик
   }
   newHandler(); // Новый обработчик
};

Вот и все. Давным-давно я потратил непростительно много времени, пока не нашел это простое и кроссбраузерное решение. Надеюсь, кому-то будет полезно.

Конечно, если вы используете библиотеку, наподобие JQuery, есть способы намного проще. Например, назначить обработчик события "ready":

$( document ).ready(function() {
  // Handler for .ready() called.
});

При этом старый обработчик не удаляется, а новый добавляется.

Теги: 

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <i> <strong> <b> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
CAPTCHA на основе изображений
Введите код с картинки