Окно Javascript. Загрузка функций - PullRequest
1 голос
/ 14 декабря 2008

Просто для экспериментов я пытался определить различные способы неразрушающего связывания window.onload функций в веб-браузере. Это идея того, что я имею до сих пор:

var load = window.onload;
var newFunction = function(){
    alert("ha!");
}
window.onload = function(){
    load();
    newFunction();
}

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда вы объединяете функцию в цепочку, она добавляет вызовы функций другого уровня в стек. Есть ли лучший способ сделать это, не добавляя ненужную глубину в стек вызовов?

Ответы [ 3 ]

3 голосов
/ 14 декабря 2008

Может быть, будет лучше использовать addEventListener / attachEvent?

Расширенные модели регистрации событий

0 голосов
/ 14 декабря 2008

Я бы лучше использовал «достаточно хороший» addEvent:

var addEvent = function( obj, type, fn ) {
        if (obj.addEventListener)
                obj.addEventListener(type, fn, false);
        else if (obj.attachEvent) 
                obj.attachEvent('on' + type, function() { return fn.apply(obj, new Array(window.event));});
}

От: http://www.ilfilosofo.com/blog/2008/04/14/addevent-preserving-this/

0 голосов
/ 14 декабря 2008

Вы могли бы взглянуть на jQuery , как они справляются с этим.

Из документов jQuery :

Вы можете иметь столько событий $ (document) .ready на вашей странице, сколько захотите. Затем функции выполняются в том порядке, в котором они были добавлены.

...