假设我有一些javascript说:
window.onunload=some_jsfunction();
如何向此处理程序添加其他函数?像这样的东西:
window.onunload=some_jsfunction() + another_jsfunction();
答案 0 :(得分:4)
首要的方式:addEventListener
:
window.addEventListener('unload', function () { /* Do things. */ });
window.addEventListener('unload', function () { /* Do other things. */ });
另一种方法是创建一个新的事件处理程序,从中调用旧的处理程序,然后覆盖旧的处理程序。我可以想象它可能有用的情况,但不是DOM事件:
var onUnload = function () {
/* Do things. */
};
var oldOnUnload = onUnload;
onUnload = function () {
oldOnUnload();
/* Do new things. */
};
最先进的方法是在DOM的观察者之上创建自己的观察者(这就是Mootools内部的框架)。从长远来看,这可能会有所帮助;例如,添加事件命名空间。
var handlers = [];
window.onunload = function () {
handlers.forEach(function (fn) { fn(); });
};
handlers.push(function () { /* Do things. */ });
handlers.push(function () { /* Do other things. */ });
答案 1 :(得分:3)
在window.onunload
上调用一个函数并在该函数中调用您的函数。像这样的事情
window.onunload = callFunctions;
虽然你的callFunction看起来像
function callFunctions() {
someFunction();
anotherFunction();
}
答案 2 :(得分:1)
jQuery库使用方法事件监听器将文档就绪函数放入回调列表中,并在触发ready事件时调用函数。对于你的问题,这可以像这样实现
onunloadList = new Array();
function addOnUnloadHandler( fn ) {
// Add the callback
onunloadList.push( fn );
}
function handleOnUnloadHandlers( fn ) {
for (i=0;i<onunloadList.length;i++) {
var fn = onunloadList[i];
fn();
}
}
window.onunload = handleOnUnloadHandlers();
一般来说,我建议使用某种类型的框架,比如jQuery,因为它内置了这样的机制。你写的代码不需要维护。