2017-10-25 4 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の名前は私が試した解決策は成功しません、されている今ここpopup1、popup2、popup3、popup4など

です:

1)それらを一つずつ閉じて、私のことが可能な理由のためにこれはポップアップ1でのみ動作します:

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

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

2)それらを反復しようとしています。アラートを追加することで、popup1、popup2などの名前を1つずつ取得するので、「while」の最初の部分が機能します。ませんが、「場合」:

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

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

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

私は年齢のため、このにされてきた、私はそれがより多くの簡単codepenに理解するために作られました。誰かがそれを助けることができたら、それは非常に高く評価されるでしょう!

ありがとうございました。

+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

こんにちは! ありがとうございました。私は今日それを試してみます。 ポップアップが迷惑であることはわかっていますが、それは実際の目標です。それは芸術的なプロジェクトのようなものです。このウェブサイトのポイントは、実際に侵襲的で信頼できないように見えることです。それは過度の広告に対するパロディです。ウェブサイトでの残虐行為の美学について聞いたことがあるのか​​どうかはわかりませんが、ヨーロッパのグラフィックデザインの新しいトレンドです:http://brutalistwebsites.com/ ありがとうございました! –

+0

最初の試着で完璧に作業しました!すばらしいです!どうもありがとうございます。 –

関連する問題