2010-08-21 6 views

답변

1

이것은 불가능합니다.

함수를 두 부분으로 나누고 하나를 실행하고 다른 부분을 단추의 클릭 이벤트 처리기에 할당합니다.

+0

실제로 필자의 요구 사항은 window.confirm에 대한 라이트 박스를 구현하는 것입니다. window.confirm은 함수를 일시 중지하고 반환 할 수 있기 때문입니다. true 또는 false 같은 것을 구현하고 싶습니다. – kumar

+0

@kumar, @David Dorward와 거의 동일한 프로 시저입니다. 클릭 핸들러를 지정하는 대신 대화 상자에 콜백을 추가합니다. – strager

+0

하지만 true 나 false를 조명 상자의 클릭 또는 누름 버튼의 현재 자바 스크립트 기능에서 반환해야합니다. – kumar

1

팝업 상자를 사용할 수 있습니다.

alert("Pausing to get Coffee"); 
+0

답장을 보내 주셔서 감사합니다. 그러나 사용자 정의 window.cofirm을 구현해야합니다. 함수가 실행을 일시 중지하지 않는 라이트 박스를 표시하고 있습니다. html의 숨겨진 변수를 true 또는 false로 설정하고 싶습니다. 또는 가벼운 상자에 아니오, 그리고 함수의 이력서에서 변수를 읽고 필요한 조치를 취할 것입니다. – kumar

1

David가 말한 것처럼 Javascript에서 함수의 실행을 중지 할 수 없습니다 (어쨌든 현재는 아닙니다). 하나 개의 솔루션이 될 것이다 :

** 편집을 할 ** 당신은 당신이 기억해야하는 것은 자바 스크립트에서 모든 비동기 있어야한다는 것입니다

// pass the reference of the button id to the function 
function showConfirm(message, callback) { 
    // 1. check if the lightbox is not already created, if not create it 
    // 2. keep a reference to your key elements, for example, your buttons 
    var btnOk = document.getElementById('btnOk'); // ...for example 
    var btnCancel = document.getElementById('btnCancel'); // ...for example 

    // 3. have a 'cleanup' function so you can dismiss your lightbox, unregister 
    //  any events/callbacks, etc. 
    var cleanup = function() { 
     // 6. hide lightbox 
     // 7. remove events/callbacks, etc. 
     btnOk.click = null; // for example 
     btnCancel.click = null; // for example 

     // etc. 
    }; 


    // 4. update your lightbox with the message given in argument 

    // 5. register some events to your buttons... 
    btnOk.click = function() { 
     callback(true); // ok was pressed 
     cleanup(); 
    }; 
    btnCancel.click = function() { 
     callback(false); // cancel was pressed 
     cleanup(); 
    } 

} 

을하고 싶었던 것에 약간의 정밀도를 추가 한 후 . 함수가 값을 반환해야한다면, 실행 시간이 오래 걸리지 않는 함수 여야합니다. Javascript로 "사용자 입력"을 읽는 즉시 콜백이 필요합니다. 다른 라이트 박스 구현이 특히 JQuery와 같은 프레임 워크에서 어떻게 수행되는지 살펴 보길 원할 것입니다.

관련 문제