Вы можете использовать jQuery для цепочки обработчиков нагрузки. Повторное использование jQuery.load
или jQuery(document).ready
будет связывать ваши обработчики (я полагаю). Другой вариант - сделать это программно, что означает, что вам нужна вспомогательная функция, которая будет связывать ваши обработчики загрузки. Вы можете сделать это с помощью замыкания (или анонимной функции):
var addOnLoadHandler = function(newHandler) {
if (typeof window.onload != 'function') {
window.onload = newHandler;
}
else {
var oldHandler = window.onload;
window.onload = function() {
if (oldHandler) {
oldHandler();
}
newHandler();
};
}
};
Вы должны будете связать свои функции программно, поэтому вам придется сделать:
addOnLoadHandlers(function() {
alert("Hi I am the first onLoad handler!");
});
addOnLoadHandlers(function() {
alert("Hi I am the second onLoad handler!");
});
в файле JavaScript (или в вашем HTML-файле).
Другой подход заключается в использовании массива:
var onloaders = new Array();
function runOnLoads() {
for (i = 0; i < onloaders.length; i++) {
try {
var handler = onloaders[i];
handler();
} catch(error) {
alert(error.message);
}
}
}
function addLoader(obj) {
onloaders[onloaders.length] = obj;
}
В вашем файле HTML или Javascript вы делаете:
addLoader(function() {
alert("Hi I am the first onLoad handler!");
});
addLoader(function() {
alert("Hi I am the second onLoad handler!");
});
Тогда в своем html вы можете просто сделать <body onload="runOnLoads()">