document.unload в переопределениях javascript или цепочках с последним определением? - PullRequest
1 голос
/ 15 марта 2011

Мне вот уже давно интересно.

Если есть функция, определенная для выгрузки тела, и с помощью javascript я делаю что-то вроде document.unload = function (), будет ли новое определение функции объединено с последним или переопределено ??

Отличается ли это поведение для браузеров или одинаково для всех браузеров? Если отличается, то почему ??

Может кто-нибудь, пожалуйста, пролить свет на это ??

Спасибо

Neeraj

Ответы [ 2 ]

2 голосов
/ 15 марта 2011

Если вы просто назначите функцию свойству, то вы перезапишите все, что там уже есть.

window.foo = 1;
window.foo = 2;

Foo теперь равно 2, и вы не ожидаете, что это будет цепочка 1, а затем 2, если вы попытаетесь прочитать ее. То, что браузер просматривает свойство и пытается запустить функцию там, где происходит событие, не меняет этого.

Вы можете сделать что-то вроде:

window.foo = aFunction;
oldFunc = window.foo;
window.foo = function () { oldFunc(); anotherFunc(); }

Но я бы порекомендовал использовать addEventListener и друзей. Поскольку мы должны поддерживать Internet Explorer и иметь дело с несколькими моделями событий , я рекомендую использовать уровень абстракции, предоставляемый любой хорошей библиотекой JS, такой как YUI или jQuery.

0 голосов
/ 15 марта 2011

Процесс подключения к разгрузке сложен и варьируется от браузера к браузеру.Вы определенно захотите использовать некоторую форму уровня абстракции, такую ​​как Prototype, jQuery и т. Д. Например, в jquery вы бы:

$(window).unload(function() {
  alert('Handler for .unload() called.');
});

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

window.onbeforeunload = function(){  
    //handler 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...