2013-10-22 33 views
0

如果客户通过广告根据他们点击的最后一个广告进入我们的网站,我需要显示不同的内容。如果他们点击广告A,我们希望显示横幅广告A,然后设置一个cookie,以便该广告横幅在点击后显示24小时。但是,如果他们在24小时内点击了广告B,我们希望向他们展示横幅B 24小时,而不显示横幅A.然后如果他们再次点击广告A,显示横幅A.如果他们没有点击任何广告,我们想向他们展示横幅C.如果存在其他Cookie,请删除Cookie

我的做法是根据他们点击的广告设置Cookie,如果他们在该Cookie存在的情况下点击OTHER广告,请删除第一个Cookie并创建相应的Cookie该广告的Cookie。希望这是有道理的。

我已经写了一个函数来查找这些cookie并显示相应的内容,但只有第一个工作。正在为两种广告方案设置Cookie,但如果PPC Cookie存在,则不会删除adroll cookie。如果存在adroll,PPC cookie将被删除。我哪里错了?这是脚本标记中的所有代码。另外,这个网站使用的jQuery 1.3.2没有升级的机会,fyi。

$(document).ready(function() { 
    if ((window.location.href.indexOf("utm_source=adroll") > -1)) { 
     var oneDay = 1000 * 60 * 60 * 24 * 1; 
     var adRollexpire = new Date((new Date()).valueOf() + oneDay); 
     document.cookie = "adroll=true;expires=" + adRollexpire.toUTCString(); 
    } 

    if (window.location.href.indexOf("source=bing") != -1 || window.location.href.indexOf("source=google") != -1) { 
     var oneDay = 1000 * 60 * 60 * 24 * 1; 
     var PPCexpire = new Date((new Date()).valueOf() + oneDay); 
     document.cookie = "ppc=true;expires=" + PPCexpire.toUTCString(); 
    } 

    $(function() { 
     var delete_cookie = function(name) { 
      document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
     }; 

     if (document.cookie.indexOf('adroll=true') >= 0) { 
      delete_cookie('ppc=true'); 
      $("#adRDetails").show(); 
      $("#adRDetails").click(function() { 
       $("#adRollDetailsBox").show(); 
      }); 
      $(".close").click(function() { 
       $("#adRollDetailsBox").hide(); 
      }); 
     } 
     else if (document.cookie.indexOf('ppc=true') >= 0) { 
      delete_cookie('adroll=true'); 
      $("#ppcDetails").show(); 
      $("#ppcDetails").click(function() { 
       $("#ppcDetailsBox").show(); 
      }); 

      $(".close").click(function() { 
       $("#ppcDetailsBox").hide(); 
      }); 
     } 

     else { 
      $("#gwp-banner").show(); 
      $("#cuisinetowelDetails").click(function() { 
       $("#cuisinetoweldetailsBox").show(); 
      }); 
      $("#cuisinetowelclose").click(function() { 
       $("#cuisinetoweldetailsBox").hide(); 
      }); 
     } 

    }); 
}); 

如果任何人有任何替代方法来实现这一目标,我愿意接受其他方法为好。谢谢!

+0

我只是想知道为什么PPCexpire被突出,而adRollexpire没有,但我看不出这是怎么与问题有关。 – Igle

+0

是的,我没有注意到!奇怪的。帽子? – surfbird0713

+0

@Igle我认为编辑器假定一个大写的大写字母表示一个类名。 – fred02138

回答

0

如果设置了PPC cookie,然后用户通过adroll进入,它看起来像你做的第一件事就是创建adroll cookie - 然后你检查哪些cookie在那里(并自然找到两者都是)。

+0

感谢您指出了这一点 - 我重写了在设置期望的cookie时删除不需要的cookie的逻辑,而不是在第二个函数中的事实之后。 – surfbird0713

0

重写代码,删除无用的cookie时所需的cookie设置解决了这个:

 $(document).ready(function(){ 
     if ((window.location.href.indexOf("utm_source=adroll") > -1)){ 
     var oneDay = 1000*60*60*24*1; 
     var adRollexpire = new Date((new Date()).valueOf() + oneDay); 
     document.cookie = "adroll=true;expires=" + adRollexpire.toUTCString(); 
     document.cookie ='ppc=true; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
     } 

     if (window.location.href.indexOf("source=bing") != -1 || window.location.href.indexOf("source=google") != -1){ 
     var oneDay = 1000*60*60*24*1; 
     var ppcexpire = new Date((new Date()).valueOf() + oneDay); 
     document.cookie = "ppc=true;expires=" + ppcexpire.toUTCString(); 
     document.cookie ='adroll=true; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
     } 

     $(function(){ 
     if (document.cookie.indexOf('adroll=true') >= 0){ 
     $("#adRDetails").show(); 
     $("#adRDetails").click(function() { 
     $("#adRollDetailsBox").show(); 
     }); 
     $(".close").click(function() { 
     $("#adRollDetailsBox").hide(); 
     });   
     } 

     else if (document.cookie.indexOf('ppc=true') >= 0){ 
     $("#ppcDetails").show(); 
     $("#ppcDetails").click(function() { 
     $("#ppcDetailsBox").show(); 
     }); 
     $(".close").click(function() { 
     $("#ppcDetailsBox").hide(); 
     });   
     } 

     else { 
     $("#gwp-banner").show(); 
     $("#cuisinetowelDetails").click(function() { 
     $("#cuisinetoweldetailsBox").show(); 
     }); 
     $("#cuisinetowelclose").click(function() { 
      $("#cuisinetoweldetailsBox").hide(); 
     });  
     } 
}); 
     });