2011-07-03 32 views
13

thể trùng lặp:
What is the “best” way to get and set a single cookie value using JavaScriptTôi làm cách nào để đặt cookie hết hạn sau x ngày với mã này?

Vì vậy, tôi có mã này (mà tôi đã không làm) mà về cơ bản làm cho một container với một X, vì vậy khi tôi bấm X, div container đóng lại. Tuy nhiên, khi bạn làm mới trang, vùng chứa div sẽ xuất hiện trở lại.

Làm cách nào để có thể thực hiện điều đó khi người đó nhấn nút X, người đó sẽ không bao giờ thấy hộp chứa div bao giờ trở lại (hoặc trong một khoảng thời gian như 30 ngày) trên trang đó?

Tôi muốn thực hiện thêm một bước nữa, nếu có thể và làm như vậy khi người đó nhấn nút X, họ sẽ không bao giờ thấy hộp chứa div trên trang web của tôi nữa, vì tôi dự định triển khai cùng một div vùng chứa trên trang web của tôi.

Hy vọng điều này không quá khó hiểu và ai đó có thể giúp tôi. Cảm ơn!

HTML Code:

<div id="bottom_ad"> 
    <div id="close_ad" onclick="close_bottom_ad();">X</div> 
    <!-- Ad Content --> 
</div> 

CSS Code: (. Nơi ở cuối tập tin, trước khi thẻ)

#bottom_ad 
{ 
    position: absolute; 
    right: 0; 
    bottom: 0; 
    left: 0; 
    height: 80px; 
    background: #000; 
} 
#close_ad 
{ 
    position: absolute; 
    top: 8px; 
    right: 8px; 
    width: 15px; 
    height: 15px; 
    color: #fff; 
} 

Javascript Code:

<script type="text/javascript"> 
    // I may have sorta kinda taken this function from W3Schools. :S 
    function getCookie(c_name) 
    { 
     var i,x,y,ARRcookies=document.cookie.split(";"); 
     for (i=0;i<ARRcookies.length;i++) 
     { 
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
      x=x.replace(/^\s+|\s+$/g,""); 
      if (x==c_name) 
      { 
       return unescape(y); 
      } 
     } 
    } 

    var ad_cookie = getCookie("closedAd"); 

    if (ad_cookie != null && ad_cookie != "") 
    { 
     document.getElementById("bottom_ad").style.display="none"; 
    } 

    function close_bottom_ad() 
    { 
     document.getElementById("bottom_ad").style.display="none"; 
     document.cookie = "closedAd=true;"; 
    } 
</script> 
+0

Nó không phải? Tôi không biết. Tôi không bao giờ chạm vào Javascript, nhưng tôi muốn có hiệu ứng này. Và tôi chưa bao giờ thấy chủ đề đó trong cuộc đời mình. – user815598

+0

Bạn muốn biết cách đặt cookie đúng không? Vì vậy, tôi đã tìm kiếm nó ở đây và tìm thấy câu hỏi này. Tôi nghĩ câu trả lời được chấp nhận sẽ giúp bạn và đang làm những gì bạn muốn. Vì vậy, tôi quyết định bỏ phiếu để đóng nó như là một bản sao. –

+0

Nếu bạn đặt html như bạn có trên tất cả các trang VỚI tập lệnh, quảng cáo sẽ không bao giờ hiển thị cho đến khi mọi người xóa cookie. Bạn sẽ cần phải thêm một đường dẫn đến cookie nếu bạn có các trang không nằm trong cùng thư mục với các thư mục khác: 'document.cookie =" closedAd = true; path =/";' Xem createCookie của câu hỏi khác cho một câu hỏi hết hạn ngày – mplungjan

Trả lời

23

Để thiết lập một 30 ngày hết hạn trên cookie của bạn, bạn cần phải thêm thời gian hết hạn vào cookie. Dưới đây là một chức năng cookie khá đơn giản đặt cookie cho N ngày:

function createCookie(name, value, days) { 
    var date, expires; 
    if (days) { 
     date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     expires = "; expires="+date.toGMTString(); 
    } else { 
     expires = ""; 
    } 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

Bằng cách đặt ngày hết hạn thích hợp trong cookie, nó sẽ tự động được xóa tại thời điểm đó. Sau đó, khi trang của bạn tải (bạn sẽ phải đợi cho đến khi trang tải xong trước khi cố sửa đổi nó), bạn có thể kiểm tra xem cookie của mình closeAd có được đặt không và nếu có, hãy thực thi mã để ẩn quảng cáo. Để có trải nghiệm xem miễn phí hơn (do đó quảng cáo không hiển thị lần đầu tiên mở, sau đó đóng), bạn có thể bắt đầu với quảng cáo bị ẩn và chỉ hiển thị quảng cáo nếu không có cookie. Hoặc bạn chỉ có thể thêm động vào trang nếu không có cookie.

Các vấn đề liên quan