Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向window.onunload添加更多函数?_Javascript - Fatal编程技术网

Javascript 如何向window.onunload添加更多函数?

Javascript 如何向window.onunload添加更多函数?,javascript,Javascript,假设我有一些javascript,上面写着: window.onunload=some_jsfunction(); 如何将另一个函数添加到此处理程序?大概是这样的: window.onunload=some_jsfunction() + another_jsfunction(); 首要的方法是: 另一种方法是创建一个新的事件处理程序,并从中调用旧的处理程序,然后覆盖旧的处理程序。我可以想象这样一种情况,它可能很有用,但不适用于DOM事件: var onUnload = function (

假设我有一些javascript,上面写着:

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);