2012-10-18 2 views
0

프로젝트의 경우 PHP 코드를 사용하여 문서를 인쇄해야합니다. 현재 인쇄를 시작할 수있는 자체 닫기 팝업이 있습니다.자바 스크립트를 사용하여 5 초 동안 팝업 링크 비활성화

유일한 문제는 사용자가 많은 수의 인쇄 요청과 거대한 대기열을 만드는 버튼을 스팸 할 수 있다는 것입니다.

코드 지금은이 :

function newPopup(url) { 
popupWindow = window.open(
url,'popUpWindow','height=10,width=100,left=10,top=10,resizable=no,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=no'); // Verstop op achtergrond 
popupWindow.blur(); 
} 
<a href="JavaScript:newPopup('print.php');">Print</a> 

나는 링크를 중지하는 몇 가지 코드를 발견하지만 난 이미가 팝업으로 호출하기 때문에 나는이를 구현하는 문제가있다.

답변

3

당신은 깃발 사용할 수 있습니다

var flag=true; 
function newPopup(url) { 
    if(flag) { 
    window.open(...).blur(); 
    flag=false; 
    window.setTimeout(function(){flag=true;},5*1000); 
    } 
} 

가 아니 "좋은"솔루션 (글로벌 변수를 사용)를,하지만 작동합니다.

2

팝업을 열기 전에 링크를 비활성화 한 다음 5 초 후에 다시 활성화 할 수 있습니다. 문제은 링크를 활성화/비활성화하는 것이 매우 휴대하기 쉬운 방법으로 수행 될 수 없다는 것입니다. 이 문제를 해결하려면 실제 링크를 저장하고 가짜 링크로 대체 한 다음 나중에 (간격 경과 후) 다시 활성화해야합니다. 이처럼 :

function newPopup(url) { 
    // Save current link and replace it with a fake one 
    var oldLink = $("#linkid").attr("href"); 
    $("#linkid").attr("href", "#"); 

    setinterval(function() { 
     // Restore true link 
     $("#linkid").attr("href", oldLink); 
    }, 5000); 

    // ... 
} 

당신은 (다른 모든 코드를 오염없이) 많은 다른 링크를 재사용하기 위해 별도의 기능 temporaryDisableLink(id, timeout)이 코드를 추출 할 수 있습니다.

이제 다른 솔루션을 살펴 보도록하겠습니다.

귀하의 HTML 코드에 (경우에 당신이 그렇지 않으면 링크 id 매개 변수를 전달할 필요가 없습니다 많은 링크에 대한 동일한 기능을 다시 사용하려는)으로 업데이트해야합니다

<a id="link-print" 
    href="JavaScript:newPopup('#link-print', 'print.php');"> 
    Print 
</a> 

pointer-events CSS 속성 IE (및 오페라)에서 지원되지 않으므로 실제 환경에서 사용할 수는 없습니다. 어쨌든 그건 :

function newPopup(id, url) { 
    $(id).css("pointer-events", "none"); 

    setinterval(function() { 
     $(id).css("pointer-events", "auto"); 
    }, 5000); 

    // ... 
} 

팝업을 열 자바 스크립트를 사용하고 당신이 당신이 계획하는 경우 사용자 정의disabled 속성을 사용 (또는 pointer-events를 확인하기 위해 약간에게 기능을 변경하기 위해 고려할 수 있기 때문에) 함께 사용할 :

function newPopup(id, url) { 
    if ($(id).attr("disabled") == "disabled") { 
     return false; 
    } 

    $(id).attr("disabled", "disabled"); 
    setinterval(function() { 
     $(id).removeAttr("disabled"); 
    }, 5000); 

    // ... 
} 
-1
<script> 
    function newPopup(url) { 
     setTimeout(function() { 
      popupWindow = window.open(
url, 'popUpWindow', 'height=10,width=100,left=10,top=10,resizable=no,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=no'); // Verstop op achtergrond 
      popupWindow.blur(); 
     },5000 
     ); 
    } 
</script> 
<a href="JavaScript:newPopup('print.php');">Print</a>