팝업 24시간 안보기 질문
본문
안녕하세요
swiper slide 를 이용해서 팝업에 접목시켜봤습니다.
근데 "닫기"는 되는데 "24시간 안보기"는 작동이 되지 않아서요
소스는 아래와 같습니다.
<div id="hd_pop">
<h2>팝업레이어 알림</h2>
<div id="hd_pops_1" class="hd_pops">
<div class="hd_pops_con">
<div class="swiper mySwiper22">
<div class="swiper-wrapper">
<?php
for ($i=0; $nw=sql_fetch_array($result); $i++)
{
echo"<div class='swiper-slide'>";
?>
<?php echo conv_content($nw['nw_content'], 1); ?>
<?
echo"</div>";
}?>
</div>
</div>
</div>
<div thumbsSlider="" class="swiper mySwiper11">
<div class="swiper-wrapper">
<?php
for ($i=0; $nw2=sql_fetch_array($result2); $i++)
{
?>
<div class="swiper-slide cursor"><?php echo $nw2['nw_subject']; ?></div>
<?php } ?>
</div>
</div>
<div class="hd_pops_footer">
<button class="hd_pops_reject hd_pops_1 24"><strong>24</strong>시간 동안 다시 열람하지 않습니다.</button>
<button class="hd_pops_close hd_pops_1">닫기</button>
</div>
</div>
</div>
<script>
// * today popup close
todayOpen('hd_pops_1');
// 창열기
function todayOpen(winName) {
var blnCookie = getCookie(winName);
var obj = eval("window." + winName);
console.log(blnCookie);
if (!blnCookie) {
obj.style.display = "block";
} else {
obj.style.display = "none";
}
}
// 창닫기
function todayClose(winName, expiredays) {
setCookie(winName, "expire", expiredays);
var obj = eval("window." + winName);
obj.style.display = "none";
}
// 쿠키 가져오기
function getCookie(name) {
var nameOfCookie = name + "=";
var x = 0;
while (x <= document.cookie.length) {
var y = (x + nameOfCookie.length);
if (document.cookie.substring(x, y) == nameOfCookie) {
if ((endOfCookie = document.cookie.indexOf(";", y)) == -1)
endOfCookie = document.cookie.length;
return unescape(document.cookie.substring(y, endOfCookie));
}
x = document.cookie.indexOf(" ", x) + 1;
if (x == 0)
break;
}
return "";
}
</script>
<script>
$(function() {
$(".hd_pops_reject").click(function() {
var id = $(this).attr('class').split(' ');
var ck_name = id[1];
var exp_time = parseInt(id[2]);
$("#"+id[1]).css("display", "none");
set_cookie(ck_name, 1, exp_time, g5_cookie_domain);
});
$('.hd_pops_close').click(function() {
var idb = $(this).attr('class').split(' ');
$('#'+idb[1]).css('display','none');
});
});
</script>
고수님들의 도움 부탁드립니다..ㅠ
!-->
답변 1
https://github.com/gnuboard/gnuboard5/blob/master/js/common.js#L141
에서 제공하는 set_cookie 함수에 문제가 있는것 같습니다.
https://developer.mozilla.org/ko/docs/Web/API/Document/cookie#write_a_new_cookie
한번에 하나의 쿠키만 조작할수 있다고 나와있는데
전달되는 4번째 인자인 domain 항목이 비어있지 않고 할당되는 경우
String 누적 연산처럼 수행되서 추가 속성들인 path, expires 등이 무시되는 현상인것 같습니다.
domain 인자가 전달되는 경우
다음처럼 수정된 함수가 사용되어야 할것 같습니다.
// 쿠키 입력
function set_cookie(name, value, expirehours, domain)
{
var today = new Date();
today.setTime(today.getTime() + (60*60*1000*expirehours));
// document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";";
// if (domain) {
// document.cookie += "domain=" + domain + ";";
// }
var cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";";
if (domain) {
cookie += " domain=" + domain + ";";
}
document.cookie = cookie;
}
답변을 작성하시기 전에 로그인 해주세요.