어렵지 않습니다. 창 중 하나를 닫으면 카운트를 업데이트 할 수 있도록 창을 계속 추적해야합니다.
쉬운 방법 : 상태를 폴링합니다 (이벤트 기반 추적은 악몽입니다).
<script>
var openWindows = {};
var openWindow = function (url, name, specs) {
var count = openWindows[name] || 0;
if (count < 5) {
var w = window.open(url, name + count, specs);
var interval = setInterval(function() {
if(!w || w.closed){
clearInterval(interval);
openWindows[name] = openWindows[name] - 1;
console.log('Closed a window for button ' + name);
}
}, 100);
openWindows[name] = count + 1;
}
console.log('Opened a window for button ' + name);
};
</script>
<!-- Usage -->
<input id="btn" name="btn" type="button" onclick="openWindow('http://www.google.it', 'google', 'width=200,height=100');" />
이 스크립트는 기본적으로 사용자가 제공 한 이름을 저장 (그렇지 않으면 팝업이 겹치는 것)이 고유하게 만들기 위해 그것을 변경하고 윈도우 객체가 더 이상 없을 때 100msec가 모든를 확인하고 정지하는 시간 초과 설문 조사를 시작하거나 창이 닫힙니다. 좀 더 명확하게하기 위해 콘솔 스팸을 추가했습니다.
중요 카운팅은 페이지를 새로 고침해도 지속됩니다. 이는 안전하게 서버 측에서만 처리 할 수있는 문제입니다.
왜 유용성의 관점에서 이것을하고 싶습니까? 나는 사용자가이 일에 짜증을 내지 않을 경우를 볼 수 없다. – Tim
@Tim. 고객의 요구 사항이었습니다. 그들은 언제든지 열 수있는 창 수를 제한하려고했습니다. – ConfusedDiva