假设我有一些JavaScript代码:
window.onunload=some_jsfunction();
如何在该处理程序中添加另一个功能?类似于这样:
window.onunload=some_jsfunction() + another_jsfunction();
假设我有一些JavaScript代码:
window.onunload=some_jsfunction();
window.onunload=some_jsfunction() + another_jsfunction();
首要的方法是: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. */ });
node.setAttribute("onClick",node.getAttribute("onClick")+newcode);
。 - Niet the Dark Absol在 window.onunload
上调用一个函数,然后在该函数中调用您的函数。就像这样:
window.onunload = callFunctions;
当你的 callFunctions 看起来像这样
function callFunctions() {
someFunction();
anotherFunction();
}
jQuery库使用一种事件监听器的方法,将文档准备好的函数放入回调列表中,当准备好事件被触发时,这些函数会被调用。对于您的问题,可以像这样实现:
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();