팝업 24시간 안보기 질문

팝업 24시간 안보기 질문

QA

팝업 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;
}
답변을 작성하시기 전에 로그인 해주세요.
전체 73
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT