Javascript 如何向window.onunload添加更多函数?
假设我有一些javascript,上面写着:Javascript 如何向window.onunload添加更多函数?,javascript,Javascript,假设我有一些javascript,上面写着: window.onunload=some_jsfunction(); 如何将另一个函数添加到此处理程序?大概是这样的: window.onunload=some_jsfunction() + another_jsfunction(); 首要的方法是: 另一种方法是创建一个新的事件处理程序,并从中调用旧的处理程序,然后覆盖旧的处理程序。我可以想象这样一种情况,它可能很有用,但不适用于DOM事件: var onUnload = function (
window.onunload=some_jsfunction();
如何将另一个函数添加到此处理程序?大概是这样的:
window.onunload=some_jsfunction() + another_jsfunction();
首要的方法是:
另一种方法是创建一个新的事件处理程序,并从中调用旧的处理程序,然后覆盖旧的处理程序。我可以想象这样一种情况,它可能很有用,但不适用于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. */ });
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();
window.onunload = callFunctions;
onunloadList=newarray();
函数addOnUnloadHandler(fn){
//添加回调
onunloadList.push(fn);
}
功能手柄(fn){
对于(i=0;i调用window.onunload
上的函数,并在该函数中调用您的函数。类似于
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();
window.onunload = callFunctions;
而您的调用函数看起来像
function callFunctions() {
someFunction();
anotherFunction();
}
使用.bind怎么样?很抱歉,忘了提一下,那么使用mootools。根据经验,我的观点是:只有在您能够承受处理浏览器不一致的情况下,才可以使用addEventListener。这里列出的第二种解决方案是一种将事件添加到一起的有用方法,但请记住,除非您重新分配旧版本,否则之后无法删除它们。作为补充,没有例如,如果事件附加到文档中的特定元素,则可以使用node.setAttribute(“onClick”,node.getAttribute(“onClick”)+newcode);
。