繁体   English   中英

如何向window.onunload添加更多功能?

[英]how to add more functions to window.onunload?

假设我有一些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. */ });

window.onunload上调用一个函数并在该函数中调用你的函数。 有点像这样

window.onunload = callFunctions;

虽然你的callFunction看起来像

function callFunctions() {
  someFunction();
  anotherFunction();
}

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,因为它内置了这样的机制。而你编写的代码则不需要维护。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM