2012-05-10 3 views
1

하이퍼 링크의 클릭 이벤트로 팝업을 엽니 다. 팝업에는 서버의 레코드가 포함되어 있습니다.jquery/jscript 여러 개의 팝업 열기 방지

신속하게을 클릭하면 한 번에 여러 개의 팝업이 나타나는 문제가 있습니다. 이것을 방지하는 방법이 있습니까?

$('.wrapper_form a.add').click(function(e) 
{ 
    e.preventDefault(); 

    if(typeof(currentPopup) == 'undefined' || currentPopup.closed) 
    { 
     url = 'server_page.aspx'; 
     currentPopup = window.open(url,'server','height=500,width=800'); 
     if (window.focus) {currentPopup.focus()} 
    } 
    else 
    { 
     currentPopup.focus(); 
    } 
}); 
+0

팝업은 한 번만 실행하면됩니까? 한 페이지 당 한 번로드? –

+0

팝업의 단일 인스턴스를 열어야합니다 – csotelo

답변

4

는 여기에 한 가지 방법입니다 :하는 하나의 팝업을

내 코드를 열 수 있습니다. 최상의 솔루션은 아니지만 작동해야합니다. 이 코드가하는 일은 링크를 여러 번 클릭하지 않도록 보호하고 각 클릭에 대해 새 인스턴스를 여는 것입니다. 이 코드는 창을 1/2 간격으로 두 번 이상 열 수 없으며 물론 타이밍을 변경할 수 있습니다.

var hopefullyThisIsNotInGlobalScope = false; 

$('.wrapper_form a.add').click(function(e) 
{ 
if (hopefullyThisIsNotInGlobalScope) 
{ 
return false; 
} 
    hopefullyThisIsNotInGlobalScope = true; 
    setTimeout(function() { hopefullyThisIsNotInGlobalScope = false; }, 500); 
    e.preventDefault(); 

    if(typeof(currentPopup) == 'undefined' || currentPopup.closed) 
    { 
     url = 'server_page.aspx'; 
     currentPopup = window.open(url,'server','height=500,width=800'); 
     if (window.focus) {currentPopup.focus()} 
    } 
    else 
    { 
     currentPopup.focus(); 
    } 
}); 

팝업을 가정하면 윈도우에 부착 된 글로벌 VAR로 hopefullyThisIsNotInGlobalScope 변수를 대체 할 수 있습니다 그것을 실행 윈도우와 동일한 도메인에 있습니다. 그런 다음 팝업을 시작하고 변경할 때 해당 변수를 설정할 수 있습니다. browser unload event

+0

코드를 시도하면 답변 (편집) ... – csotelo

+0

이 기능을 사용 했습니까? –

+0

좋은 해결책 ... 잘 작동합니다, 대단히 감사합니다! – csotelo