팝업레이어 24시간 닫기
본문
기존 팝업 레이어(newwin.inc.php)에는 임의로 수정한 스타일이 적용되어 있고 그외에 새창을 만들어서 기본 스타일 팝업을 직접 제작해 넣었습니다
기존 팝업은 닫기, 24시간 닫기가 다 잘 적용되는데 직접만든 팝업만 24시간 닫기가 적용이 안되더라구요
한 페이지에 팝업이 여러개 있을때 쿠키가 한쪽만 읽을수 있는건지 다른 해결 방법이 있을까요?
<div id="hd_pops_100" class="hd_pops100" style="width:500px;">
<div class="hd_pops_con" style="width:100%">
<img src="/img/popup/popup.jpg" alt="">
</a>
</div>
<div class="hd_pops_footer">
<button class="hd_pops_reject hd_pops_100"><strong>24</strong>시간 동안 다시 열람하지 않습니다.</button>
<button class="hd_pops_close hd_pops_100">닫기</button>
</div>
</div>
<script>
$(function() {
$(".hd_pops_reject").click(function() {
var id = $(this).attr('class').split(' ');
var ck_name = id[1];
var exp_time = parseInt(id[2]);
$("#hd_pops_100").css("display", "none");
set_cookie(ck_name, 1, exp_time, g5_cookie_domain);
});
$('.hd_pops_close').click(function() {
var idb = $(this).attr('class').split(' ');
$('#hd_pops_100').css('display','none');
var hd_pops_length = $('.hd_pops:visible').length;
if($('.hd_pops:visible').length == 0){
$('#hd_pop_fixed').css('display','none');
}
});
$("#hd_pops_100").css("z-index", 1000);
});
</script>
답변 4
스크립트로 쿠키를 읽어서 시간을 기록하는 부분이 누락된듯합니다.
아래 소스코드를 올려드리오니 참고해서 적용해보시길 바랍니다.
// 쿠키 생성 함수
function setCookie(cName, cValue, cDay){
var expire = new Date();
expire.setDate(expire.getDate() + cDay);
cookies = cName + '=' + escape(cValue) + '; path=/ '; // 한글 깨짐을 막기위해
if(typeof cDay != 'undefined') cookies += ';expires=' + expire.toGMTString() + ';';
document.cookie = cookies;
}
// 쿠키 가져오기 함수
function getCookie(cName) {
var x, y; var val = document.cookie.split(';');
for (var i = 0; i < val.length; i++) {
x = val[i].substr(0, val[i].indexOf('='));
y = val[i].substr(val[i].indexOf('=') + 1);
x = x.replace(/^\s+|\s+$/g, ''); // 앞과 뒤의 공백 제거하기
if (x == cName) {
return unescape(y);
// unescape로 디코딩 후 값 리턴
}
}
}
// 팝업창 닫기
function closeWin(popId) {
document.getElementById(popId).style.display = "none";
}
// 오늘 하루 보지 않기 닫기
function todaycloseWin(cookiename) {
setCookie(cookiename, "done" , 1); // 저장될 쿠키명 , 쿠키 value값 , 기간
var popId = 'popup_' + cookiename.split('_')[1];
document.getElementById(popId).style.display = "none"; // 팝업창 아이디
}
혹시 여러개의 팝업을 띄우실 경우 #hd_pops_100 팝업 아이디를 다르게 하셔야 반영이 됩니다~
팝업아이디가 모두 같아서 그런것 같네요.
해당 아이디로 쿠키가 생성되기 때문에...
쿠키 변수 모두 로드해서 테스트 해보세요.