Скрипт для изменения повара ie срок годности до 6 месяцев - PullRequest
0 голосов
/ 04 мая 2020

Я определенно новичок в Javascript, но мне нужно внедрить тег в GTM, чтобы обновить 2 значения cook ie до 6 месяцев для любого уникального пользователя после загрузки на страницу.

У меня есть следующий скрипт для изменения даты истечения срока действия:

<script>
function getCookie(name) {
    var value = "; " + document.cookie;
    var parts = value.split("; " + name + "=");
    if (parts.length == 2)
    return parts.pop().split(";").shift();
}


var date = new Date();
date.setTime(date.getTime()+(365*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
console.log("expires: " + expires);
var cookieName = "CookieA";
var OABCcookieName = "CookieB";

function updateCookieExpiration() {
    var cookie = getCookie(cookieName);
    document.cookie = cookieName + "=" + cookie + expires + ";path=/; Samesite=Lax;" //domain=" + domain + ";";

    var OABCcookie = getCookie(OABCcookieName);
    document.cookie = OABCcookieName + "=" + OABCcookie + expires + ";path=/; Samesite=Lax;" //domain=" + domain + ";";
}

</script>

Мой вопрос: если я добавлю следующий скрипт, обновлю 365 до 180 и вызову функцию updateCookieExpiration () - функция не будет вызываться на каждой странице и приводить к тому, что срок действия cook ie всегда сбрасывается на 6 месяцев?

Если так, есть ли дополнительные логики c, которые мне нужно добавить, чтобы убедиться, что срок действия cook ie не удалось выполнить сброс для уникального посетителя, чтобы избежать описанного сценария?

Любая помощь в устранении неполадок была бы полезной и очень ценной!

1 Ответ

0 голосов
/ 04 мая 2020

Вы можете добавить проверку условия, если имя повара ie уже существует:

// You may prefer using max-age here
const sixMonthMaxAge = 60 * 60 * 24 * 180;
var newCookieName = "CookieA";

function updateCookieExpiration() {
    const cookie = getCookie(cookieName);
    // If cookie doesn't exist
    if(!cookie) {
      document.cookie = cookieName + "=" + cookie + ";"  + "max-age=" sixMonthMaxAge + ";"
    }
}

Использование js -cook ie библиотека

Использование библиотеки, которая абстрагирует управление Cook ie, может быть хорошей идеей, даже больше, если вам нужно управлять несколькими куки.

import Cookies from 'js-cookie'

const sixMonthMaxAge = 180; // You can provide the max-age in days
var newCookieName = "CookieA";

function updateCookieExpiration() {
    const cookie = Cookies.get(cookieName);
    if(!cookie) {
      Cookie.set(cookieName, 'your_value', { expires: sixMonthMaxAge })
    }
}

Cookies.set('foo', 'bar')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...