2011-10-31 5 views
3

내가 말한다 일부 자바 스크립트가 있다고 가정window.onunload에 더 많은 함수를 추가하는 방법은 무엇입니까?

window.onunload=some_jsfunction(); 

가 어떻게이 핸들러에 다른 기능을 추가 할 수 있습니다 ? 이 같은 :

window.onunload=some_jsfunction() + another_jsfunction(); 
+0

어떤 형태 동안? http://api.jquery.com/bind/ –

+0

죄송합니다. mootools를 사용하는 것을 잊어 버렸습니다. – user603007

+0

http://mootools.net/docs/core/Element/Element.Event#Element:addEvent. – katspaugh

답변

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. */ }); 
+2

내 의견에 따르면, 경험에 기반 : 브라우저 불일치를 처리 할 수 ​​있다면 addEventListener 만 사용하십시오. 여기에 나열된 두 번째 해결 방법은 이벤트를 함께 추가하는 유용한 방법이지만 이전 버전을 재 할당하지 않으면 제거 할 수 없습니다. 부수적으로, 이벤트가 문서의 특정 요소에 첨부되어 있다면'node.setAttribute ("onClick", node.getAttribute ("onClick") + newcode);'를 사용할 수 있습니다. –

1

jQuery 라이브러리는 콜백 목록에 넣어 문서 준비 함수에 대한 접근 방식의 이벤트 리스너를 사용하고 준비 이벤트가 발생할 때 기능이 호출됩니다. 문제의 경우 이것은 내가 그 내장과 같은 메커니즘을 가지고 있기 때문에 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(); 

처럼 어떻게 든 구현 될 수있다. 그리고 코드는 당신이 필요 없어 쓸 돈 유지하다.

3

window.onunload에서 함수를 호출하고 해당 함수에서 함수를 호출하십시오. 이

window.onunload = callFunctions; 

같은 일부 것은 당신의 callFunctions는 .bind 사용에 대한

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

downvote에 대한 이유가 있습니까? 나는 정말로 알고 싶어 하느냐? –

관련 문제