【问题标题】:Prevent page refresh on cookie banner click防止在 cookie 横幅点击时刷新页面
【发布时间】:2017-04-17 16:35:38
【问题描述】:

我设置了一个欧盟 cookie 横幅:单击 href 上的“确定”时页面刷新。

我尝试使用event.preventDefault(); 和:a href="#" onclick="return false;",但链接不起作用(允许 cookie)并且不会消失。

有人可以帮我防止点击链接时页面刷新吗?

我的基本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();
});

【问题讨论】:

    标签: jquery html wordpress cookies page-refresh


    【解决方案1】:

    您可以使用 javascript 设置 cookie ['accept-cookies']

    像这样的

    $('.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;
    }
    

    【讨论】:

    • 谢谢!我试过你的代码,但它对我不起作用。它仍然会重新加载页面。我正在尝试使用 jquery ajax 处理此问题,但到目前为止没有成功!
    猜你喜欢
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多