bfcache 복원 시 모달이 열린 채 남아 화면을 덮는 문제를 고친다.
- 전체화면 모달/팝업(.fixed.inset-0[id$=-modal|-popup])이 열린 상태로 bfcache(뒤로가기/탭 복귀)에 저장·복원되면 회색 레이어가 클릭을 막던 문제 - pagehide(이탈 시)·pageshow(복원 시) 에서 해당 오버레이를 강제로 닫고 body 스크롤 잠금 해제 - portal·admin·main 레이아웃에 공통 적용(모든 페이지 커버) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -147,5 +147,18 @@ tailwind.config = {
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<?= view('home/_dashboard_gov_portal_nav_script_base', $navPartial) ?>
|
<?= view('home/_dashboard_gov_portal_nav_script_base', $navPartial) ?>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
// bfcache 복원 시 열린 채 남은 모달/팝업으로 회색 레이어가 클릭을 막는 문제 방지
|
||||||
|
function closeStuckOverlays() {
|
||||||
|
document.querySelectorAll('.fixed.inset-0[id$="-modal"], .fixed.inset-0[id$="-popup"]').forEach(function (el) {
|
||||||
|
el.classList.add('hidden'); el.setAttribute('aria-hidden', 'true');
|
||||||
|
});
|
||||||
|
document.body.style.overflow = '';
|
||||||
|
}
|
||||||
|
window.addEventListener('pageshow', function (e) { if (e.persisted) closeStuckOverlays(); });
|
||||||
|
window.addEventListener('pagehide', closeStuckOverlays);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -181,5 +181,18 @@ body { overflow: hidden; }
|
|||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
// bfcache 복원 시 열린 채 남은 모달/팝업으로 회색 레이어가 클릭을 막는 문제 방지
|
||||||
|
function closeStuckOverlays() {
|
||||||
|
document.querySelectorAll('.fixed.inset-0[id$="-modal"], .fixed.inset-0[id$="-popup"]').forEach(function (el) {
|
||||||
|
el.classList.add('hidden'); el.setAttribute('aria-hidden', 'true');
|
||||||
|
});
|
||||||
|
document.body.style.overflow = '';
|
||||||
|
}
|
||||||
|
window.addEventListener('pageshow', function (e) { if (e.persisted) closeStuckOverlays(); });
|
||||||
|
window.addEventListener('pagehide', closeStuckOverlays);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -152,6 +152,21 @@ tailwind.config = {
|
|||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
|
(function () {
|
||||||
|
// bfcache(뒤로가기/탭 복귀) 복원 시 열린 채 남은 전체화면 모달·팝업으로 인해
|
||||||
|
// 회색 레이어가 화면을 덮고 클릭이 막히는 문제 방지 — 복원 시 강제로 닫는다.
|
||||||
|
function closeStuckOverlays() {
|
||||||
|
document.querySelectorAll('.fixed.inset-0[id$="-modal"], .fixed.inset-0[id$="-popup"]').forEach(function (el) {
|
||||||
|
el.classList.add('hidden');
|
||||||
|
el.setAttribute('aria-hidden', 'true');
|
||||||
|
});
|
||||||
|
document.body.style.overflow = '';
|
||||||
|
}
|
||||||
|
window.addEventListener('pageshow', function (e) { if (e.persisted) closeStuckOverlays(); });
|
||||||
|
window.addEventListener('pagehide', closeStuckOverlays);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
(() => {
|
(() => {
|
||||||
// 표의 '번호' 컬럼 역순 자동 채번 (기존 사이트 레이아웃 계승)
|
// 표의 '번호' 컬럼 역순 자동 채번 (기존 사이트 레이아웃 계승)
|
||||||
const normalize = (s) => String(s || '').replace(/\s+/g, '').trim();
|
const normalize = (s) => String(s || '').replace(/\s+/g, '').trim();
|
||||||
|
|||||||
Reference in New Issue
Block a user