2017-10-25 10 views
1

여기 내 웹 사이트는 http://www.brute.adult입니다. 그리고 여기에 codepen이 있습니다 : https://codepen.io/vaninoo/pen/GMbbEg.언로드시 많은 팝업 창 닫기

웹 사이트에서 볼 수 있듯이 링크를 클릭하면 많은 팝업이 표시됩니다. 나는 그들을 언로드했을 때 사라지게하려고 노력했다. 여기에 팝 업 호출하는 방법은 다음과 같습니다 당신이 볼 수 있듯이, 그들 중 일부는 창문 구멍에 리듬을 만들기 위해 지연된다

$("#title1").click(function() { 
     popup1 = window.open("protein.html", "_blank","menubar=no,location=no,resizable=no,scrollbars=no,status=yes,top=0,left=500,width=500,height=500"); 

     setTimeout(function(){ 
      var popup2 = window.open("protein2.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=300,left=100,width=500,height=600"); 
     }, 500); 

     setTimeout(function(){ 
      var popup3 = window.open("protein3.html", "_blank","toolbar=no,scrollbars=yes,resizable=yes,top=10,left=2000,width=400,height=700"); 
     }, 1000); 

     setTimeout(function(){ 
      var popup4 = window.open("protein4.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=50,left=50,width=400,height=400"); 
     }, 1500); 
}); 

. 그리고 자신의 VAR 이름은 popup4 등 popup1, popup2, popup3이다

지금 여기없는 성공을 내가 해봤 솔루션이다

:

1) 그들에게 하나 하나를 닫으면,하지만 이유가 내가 할 수있는 알아 내면 팝업 1에서만 작동합니다 :

$(window).on('beforeunload', function() { 
    if(popup1) { 
     popup1.close(); 
    } 
    else {} 
}); 

$(window).on('beforeunload', function() { 
    if(popup2) { 
     popup2.close(); 
    } 
    else {} 
}); 

2) 반복 시도 중입니다. 나는 alert, popup1, popup2 등의 이름을 하나 하나 추가함으로써, "while"의 첫 부분을 작동시킬 것이다. 그러나 "if"는 그렇지 않습니다 :

$(window).on('beforeunload', function() { 
    var popup = "popup"; 
    var i = 0; 

    while (i < 3) { 
     namesofpopups = popup + i; 
     i++; 

     if(namesofpopups) { 
      namesofpopups.close(); 
     } 
    } 
}); 

나는 이것을 오래 전부터 사용 해왔다. 누군가가 도움을 줄 수 있다면 대단히 감사하게 될 것입니다!

긴 게시물을 보내 주셔서 감사합니다.

+1

팝업 대신 모달을 사용하십시오. 라이트 박스 같은 것. –

답변

2

이것은 팝업 참조 변수의 범위 때문입니다. 클릭 핸들러 안에 모두 (popup1 제외)를 정의 했으므로 onbeforeunload 이벤트 핸들러에서 액세스 할 수 없습니다. 이가 말했다되고으로

var popups = []; 

$("#title1").click(function() { 
    popups.push(window.open("protein.html", "_blank", "menubar=no,location=no,resizable=no,scrollbars=no,status=yes,top=0,left=500,width=500,height=500")); 

    setTimeout(function() { 
    popups.push(window.open("protein2.html", "_blank", "toolbar=no,scrollbars=yes,resizable=yes,top=300,left=100,width=500,height=600")); 
    }, 500); 

    // other popups... 
}); 

$(window).on('beforeunload', function() { 
    popups.forEach(function(popup) { 
    popup.close(); 
    }); 
}); 

와 사용자를 포격 :

은 당신이 루프 탭이 언로드 될 수 있습니다 통해 배열이 같은 뭔가에 대한 참조를 밀어 좋을 것이 문제를 해결하려면 팝업은 엄청나게 짜증납니다. 사실, 당신이 저에게 그것을했다면 나는 의도적으로 당신의 웹 사이트를 사용하지 않을 것입니다. 나는 당신이 내에서 귀하의 페이지 대신이 행동을 필요로하는 경우에 당신이 모달 팝업을 사용하는 방법을 찾아 볼 것을 제안합니다.

+0

안녕하세요! 답장을 보내 주셔서 감사합니다. 나는 팝업이 짜증나는 것을 알고 있으며, 실제로 목표입니다. 그것은 예술적인 프로젝트의 일종이며이 웹 사이트의 요점은 실제로 침략적이고 신뢰할 수없는 것처럼 보입니다. 과도한 광고에 대한 패러디입니다. 웹 사이트에서의 Brutalist 미학에 대해 들었는지 모르겠지만, 유럽 그래픽 디자인의 새로운 추세 일 것입니다 : http://brutalistwebsites.com/ 고마워요! –

+0

첫 번째 시도에서 완벽하게 작동했습니다! 큰! 정말 고맙습니다. –