0

我目前正在一个需要年龄检查才能进入的网站上工作。当前的编码方式是页脚中有一个 agecheck div,它在初始页面加载时显示,并且在用户单击“是”之前一直可见。单击“是”将 ofage cookie 设置为 true,它将隐藏 div。这样做的问题是,一旦用户确认了他们的年龄,在其他页面之间导航/刷新当前页面时,agecheck div 将随机并定期显示一瞬间。

我认为最好的方法是重新编码脚本,以便默认情况下始终隐藏 agecheck div,并且它显示的唯一时间是 cookie 为空或用户单击“否”。我对 javascript 和 cookie 的理解非常有限,所以我正在寻找一些关于这方面的指导。

这是年龄检查功能:

function checkAge(){

  jQuery('html').css('overflow','hidden');
  jQuery('body').css('overflow','hidden');
  jQuery('body').css('height','100%');
  jQuery('html').css('height','100%');

  checkCookie();
  // check age will need to check this
  if(ofAge){
    jQuery("#ageCheck").hide();
    initPage();
  }else{
    jQuery('#ageCheckYes').click(is21);
    jQuery('#ageCheckNo').click(isNot21);
  }
};

//
// if the user is of age, animate in page
function is21(){
  setCookie();
  var  h  = jQuery(document).height();
  // animate the div off
  jQuery('#ageCheckBeerBG').animate({ top:h + 300 }, 2000+h);
  jQuery("#ageCheck").delay(900).fadeOut("fast", function() {
    initPage();
  });
}
// 
// user is not 21 send them on there way
function isNot21(){
  alert('I am sorry you must be 21 or older to enter.')
};
//

这是 cookie 检查代码:

function setCookie(){
  document.cookie = "age_verified=true"
};

// check for cookie //
function checkCookie(){
  var thiscookie = getCookie("age_verified");
  if (thiscookie!="true"){
    ofAge=false;
  }else{
    ofAge=true;
  }
};
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,"");
    console.log(unescape(x));
    if (x==c_name){
      return unescape(y);
    };
  };
};

提前致谢!

4

1 回答 1

1

在样式表中使用 CSS 将元素默认设置为隐藏。将 ofAge 设置为 true/false 的位置,如果设置为 false,则显示它。

于 2013-10-17T20:15:06.200 回答