2016-12-02 95 views
0

我设置了一个EU cookie横幅:在href上单击“ok”时刷新页面。防止页面刷新Cookie横幅点击

我尝试使用event.preventDefault();和:a href="#" onclick="return false;"但该链接没有做他的工作(允许cookies)并且不会消失。

有人可以帮助我阻止页面刷新链接点击?

我基本的html:

if (isset($_GET['accept-cookies'])){ 
setcookie('accept-cookies', time() +31556925); 
header('Location: ./'); 
} 

?><!DOCTYPE html> 

<head> 
... 
</head> 

<body <?php body_class(); ?>> 

<?php 
if (!isset($_COOKIE['accept-cookies'])){ 
?> 
     <div class="cookie-banner"> 
      <div class="cookie-container"> 
       we use cookies <a href ="?accept-cookies" id="ok" class="button" > ok, continue </a> 
      </div> 
     </div> 

和我的jQuery:

$(document).ready(function() { 
    $('.cookie-banner').slideDown(800); 
}); 

$(document).click(function (event) {    
    $('#ok')[0].click(); 
}); 

回答

0

您可以设置cookie的[ '接受饼干']用JavaScript

像这样的事情

$('.cookie-banner #ok').on('click', function(e) { 
    e.preventDefault(); 
    var accept_cookies = getCookie('accept-cookies'); 
    if(accept_cookies === undefined) { 
     setCookie('accept-cookies', true, {expires:31556}) 
    } 
}) 


//get cookie 
function getCookie(name) { 
    var matches = document.cookie.match(new RegExp(
    "(?:^|;)" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" 
)); 
    return matches ? decodeURIComponent(matches[1]) : undefined; 
} 

//set cookie 
function setCookie(name, value, options) { 
    options = options || {}; 

    var expires = options.expires; 

    if (typeof expires == "number" && expires) { 
    var d = new Date(); 
    d.setTime(d.getTime() + expires * 1000); 
    expires = options.expires = d; 
    } 
    if (expires && expires.toUTCString) { 
    options.expires = expires.toUTCString(); 
    } 

    value = encodeURIComponent(value); 

    var updatedCookie = name + "=" + value; 

    for (var propName in options) { 
    updatedCookie += "; " + propName; 
    var propValue = options[propName]; 
    if (propValue !== true) { 
     updatedCookie += "=" + propValue; 
    } 
    } 

    document.cookie = updatedCookie; 
} 
+0

谢谢!我试过你的代码,但它不适合我。它仍然会重新加载自己的页面。我试图用jquery ajax来处理这个,但迄今为止没有成功! –