Пользователь не сохраняет куки, когда они покидают страницу - PullRequest
0 голосов
/ 21 марта 2019

Я использую jscookie, чтобы назначить пользователям cookie после запуска всплывающего окна, чтобы они не видели его в течение 7 дней.Мой код ниже.

На обеих страницах функция ищет всплывающий cookie.Если файл cookie отсутствует, всплывающее окно запускается, и файл cookie назначается.Обе эти функции работают правильно.

Вот проблема:

Если пользователь посещает page A, всплывающее окно сработает, и ему будет назначен файл cookie.Затем, если пользователь переходит на page B, у него все еще есть файл cookie, и всплывающее окно не будет запускаться.

Однако, если пользователь впервые посещает page B, всплывающее окно будет запущено, и файл cookie назначен. Но , если пользователь затем переходит к page A, cookie больше не появляется в списке файлов cookie.Появится всплывающее окно page A и будет назначен файл cookie.

Вот кикер .Если я вернусь на страницу BI, я увижу два одинаковых файла cookie.Единственная разница - path.Один popup_cookie со страницы A и другой со страницы B.

Пример:

Name          Value  Domain        Path
popup_cookie  true   mydomain.com  /page-a
popup_cookie  true   mydomain.com  /page-b

Вопрос:

Так почему же пользователь сохраняет cookie при переходеот page A до page B, но не от page B до page A?Как вы можете видеть ниже, cookie назначается одинаково в обоих случаях.

////Page A Popup

// Checks for popup cookie
if (Cookies.get('popup_cookie') == 'true') {
    // Do nothing
} else if ($('#form').length) { 
    $('#form').appendTo('#page-a-popup-container');
    $('body').on('mouseleave',function () {
        if ($('#other-element').hasClass('visible')) {
            // Do nothing
        } else {
            $('#page-a-popup-container').css('display', 'grid');
            $('#popup-bg').fadeIn();
            Cookies.set('popup_cookie', true, {expires: 7, path: ''});
            $('body').off('mouseleave');
        }
    });
    // Pop-up Close Button
    $('#page-a-popup-close').click(function () {
        $('#page-a-popup-container').hide();
        $('#popup-bg').hide();
    });
}

//// Page B Popup

// Checks for popup cookie
if (Cookies.get('popup_cookie') == 'true') {
    // Do nothing
} else if ($('#form').length) {
    $('#form').appendTo('#plan-b-popup-container');
    $('body').on('mouseleave',function () {
        if ($('#drip-header-119587').hasClass('drip-hidden')) {
            // Do nothing
        } else {
            $('#plan-b-popup-container').css('display', 'grid');
            $('#popup-bg').fadeIn();
            Cookies.set('popup_cookie', true, {expires: 7, path: ''});
            $('body').off('mouseleave');
        }
    });
    // Pop-up Close Button
    $('#plan-b-popup-close').click(function () {
        $('#plan-b-popup-container').hide();
        $('#popup-bg').hide();
    });
}

1 Ответ

0 голосов
/ 21 марта 2019

Dangit.Конечно, я понял это сразу после того, как потратил все это время на этот пост :(

Все, что мне нужно было сделать, это установить путь к cookie на path: '/' в обеих функциях. Таким образом, cookie, назначенный на внутреннюю частьстраница сохраняется на каждой странице.

Очевидно, путь определяет, где активен файл cookie.

...