実現したいこと
1.ページにアクセスした場合に、モーダルダイアログでポップアップを表示したい
2.かつ、該当ページへのアクセスは同サイト内のリンクからである(トップページではない)
下記は挙動確認済です
・該当ページのURLをブラウザに打ち込んで直接アクセスした場合
・(上記と意味的には同じですが)該当ページへのリンクを"別ページ/ウィンドウ/タブで開いた場合"
発生している問題・エラーメッセージ
同じタブ内(ウィンドウ内)リンクでアクセスした場合、ポップアップの表示がされません。
該当のソースコード
HTML
1<div class="bg_onetime_popup"> 2 <div class="onetime_popup"> 3 <div class="onetime_popup_title"> 4 <!--<span class="onetime_popup_title_close"></span>--> 5 <span style="font-size:3rem;"><i class="fas fa-exclamation-circle"></i></span><br>ご注意ください 6 </div> 7 <div class="onetime_popup_content"> 8 <p>記入漏れ・記入間違いが増えています。</p> 9 <label class="onetime_popup_title_close">確認しました</label> 10 </div> 11 </div> 12</div> 13
CSS
1body.open_popup { 2 overflow: hidden; 3} 4 5.bg_onetime_popup { 6 position: fixed; 7 top: 0px; 8 left: 0px; 9 z-index: 9999; 10 width: 100vw; 11 height: 100vh; 12 background-color: rgba(0, 0, 0, 0.7); 13 opacity: 0; 14 visibility: hidden; 15 transition: 0.5s; 16} 17 18body.open_popup .bg_onetime_popup { 19 opacity: 1; 20 visibility: visible; 21} 22 23.onetime_popup { 24 position: absolute; 25 top: 50%; 26 left: 50%; 27 transform: translateX(-50%) translateY(-50%); 28 width: 40%; 29 background-color: #F5F5F5; 30 border-radius: 5px; 31} 32 33.onetime_popup_title { 34 position: relative; 35 padding-top: 0.8em; 36 margin: 0px; 37 color: #5D653B; 38 font-size: 1rem; 39 text-align: center; 40 line-height: 1.5; 41 font-weight: bold; 42} 43 44 45.onetime_popup_title_close { 46 position: relative; 47 display: inline-block; 48 background: #A5AF7E; 49 color: #fff; 50 border-radius: 0px 0px 5px 5px; 51 cursor: pointer; 52 left: 50%; 53 transform: translateX(-50%); 54 font-size: 0.8rem; 55 line-height: 3rem; 56 width: 100%; 57 text-align: center; 58 font-weight: bold; 59} 60 61.onetime_popup_content { 62 text-align: left; 63 color: #000; 64} 65 66.onetime_popup_content p { 67 font-size: 0.8rem; 68 line-height: 1.7; 69 padding: 20px; 70}
JavaScript
1window.addEventListener('load', function() { 2 if(!sessionStorage.getItem('disp_popup')) { 3 sessionStorage.setItem('disp_popup', 'on'); 4 const body = document.querySelector('body'); 5 const bgPopup = document.querySelector('.bg_onetime_popup'); 6 const popup = document.querySelector('.onetime_popup'); 7 const popupTitleClose = document.querySelector('.onetime_popup_title_close'); 8 body.classList.add('open_popup'); 9 10 bgPopup.addEventListener('click', function() { 11 closePopup(); 12 }); 13 popup.addEventListener('click', function(e) { 14 e.stopPropagation(); 15 }); 16 popupTitleClose.addEventListener('click', function() { 17 closePopup(); 18 }); 19 20 function closePopup() { 21 body.classList.remove('open_popup'); 22 } 23 } 24}, false);
試したこと
javascriptに関しては全くの無知なのでお手上げ状態です。
なぜ新規ウィンドウで開いた(or直接アクセスした場合)のみ問題なくポップアップが表示されるのかの理由も全くわからないです。
直接アクセスでの挙動が確認できていること・デザインの崩れ等はないことから、html・CSSではなくjavascriptになにか要因があるのではと考えています。
いっそのこと他サイトのテンプレートを参考に差し替えようと探したのですが、
大体のモーダルポップアップのテンプレートが「ボタンを押した場合に表示」等のもので、表示条件が異なる為それも出来かねている状態です。
お手数をおかけしますが、ご教示よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
・該当のページへのリンクをtarget="_blank"にするのは運用上非現実的なのでそれは避けたいと思っています。
・現在、該当リンクのtarget指定はありません。
こちら(https://migi.me/javascript/popup-modal-window-only-once/)のサイトを参考にさせていただいています。
※ほぼコピペになります。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/08/16 10:42
2024/08/16 13:22
2024/08/16 18:04
2024/08/19 09:33
2024/08/19 09:34
2024/08/22 22:51