JavaScript欧盟cookie法律横幅不删除

时间:2015-09-14 21:06:47

标签: javascript jquery cookies

我一直试图在我的网站上添加欧盟Cookie政策横幅。下面的javascript代码插入横幅(一旦我添加了一些样式)但是当我点击" x"关闭横幅并希望隐藏它以供将来访问,没有任何反应。横幅并没有消失。

谁能告诉我为什么这不起作用? Javascript不是我的强项!

//Cookie banner

var dropCookie = true;                      // false disables the Cookie, allowing you to style the banner
var cookieDuration = 14;                    // Number of days before the cookie expires, and the banner reappears
var cookieName = 'complianceCookie';        // Name of our cookie
var cookieValue = 'on';                     // Value of cookie

function createDiv(){
    var bodytag = document.getElementsByTagName('body')[0];
    var div = document.createElement('div');
    div.setAttribute('id','cookie-law');
    div.innerHTML = '<p>Our website uses cookies. By continuing we assume your permission to deploy cookies, as detailed in our <a href="/privacy-cookies-policy/" rel="nofollow" title="Privacy &amp; Cookies Policy">privacy and cookies policy</a>. <a class="close-cookie-banner" href="javascript:void(0)" onclick="removeMe()"><span>X</span></a></p>';    
 // Be advised the Close Banner 'X' link requires jQuery

    // bodytag.appendChild(div); // Adds the Cookie Law Banner just before the closing </body> tag
    // or
    bodytag.insertBefore(div,bodytag.firstChild); // Adds the Cookie Law Banner just after the opening <body> tag

    document.getElementsByTagName('body')[0].className+=' cookiebanner'; //Adds a class tothe <body> tag when the banner is visible

    createCookie(window.cookieName,window.cookieValue, window.cookieDuration); // Create the cookie
}


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

function checkCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)===' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

window.onload = function(){
    if(checkCookie(window.cookieName) !== window.cookieValue){
        createDiv(); 
    }
};

function removeMe(){
    var element = document.getElementById('cookie-law');
    element.parentNode.removeChild(element);
};

谢谢!

1 个答案:

答案 0 :(得分:1)

函数removeMeundefined处理程序的当前范围内是onclick。要解决此问题,您应该将此行function removeMe() {替换为window.removeMe = function removeMe() {

实例(格式化代码):https://jsfiddle.net/xnhpzto8/1/