Javascript: уникальное условие для каждой страницы и cookie

Вот в чем дело:

У меня есть 2 отдельные страницы со скрытым контентом, который появляется только после того, как на моей странице потрачено определенное время (для синхронизации с тем, что я говорю в своем видео). Это страница А, а это страница Б

На этой странице вы увидите видео. Если вы перезагрузите страницу, ниже вы увидите зеленую кнопку. Это происходит потому, что у меня есть следующий скрипт в нижнем колонтитуле страницы, чтобы установить cookie и помнить, что «начиная со второго посещения, всегда показывай контент».

Вот сценарий:

<script>if(/(^|;)s*cookie_lp=/.test(document.cookie)){var divs=document.querySelectorAll("div.thrv_content_reveal");[].forEach.call(divs,function(e){e.style.display="block"})}else document.cookie="cookie_lp=true; max-age=31536000";</script>

Сам скрипт очень прост: он просто проверяет, возвращает ли этот файл cookie истинное значение. Если так, покажите контент. Если нет, то установите cookie.

(По крайней мере, я верю в это. Это был не я, кто кодировал.)

Проблема в том, что если я сначала перехожу на страницу A, кнопка скрыта. Если я сразу же зайду на страницу B, кнопка появится, даже если это первый визит на эту конкретную страницу (потому что cookie установлен в браузере пользователя).

Так что мне нужно просто адаптировать скрипт, чтобы он был уникальным и работал на каждой странице . Смысл:

Если я захожу на страницу А в первый раз, кнопка скрыта. Во второй раз кнопка показывается. НО… если я получу доступ к странице B после этого, кнопка все равно должна быть скрыта (1-й визит на эту страницу).

Я попытался изменить имя файла cookie на уникальную страницу для каждой страницы (например, cookie_lp_pageA ), но это создало другую проблему, которую я не знаю почему (кнопка никогда не будет отображаться независимо от количества посещений).

Я считаю, что это что-то маленькое, чего я не видел (я не кодер, просто любопытный парень). Так что, возможно, кто-то заметит это быстро.

Спасибо!

Всего 1 ответ


Вы можете попробовать использовать локальное хранилище https://www.w3schools.com/jsref/prop_win_localstorage.asp

Этот код должен работать на странице A или B:

<!DOCTYPE html>
<html>
<head>
<script>
function visitCounter(pageID) {
  if(typeof(Storage) !== "undefined") {
    if (localStorage['page'+pageID]) {
      localStorage['page'+pageID] = parseInt(localStorage['page'+pageID]) + 1;     
      document.getElementById('button1').innerText = "Show";
    } else {
      localStorage['page'+pageID] = 1;
    }
    document.getElementById("result").innerHTML = "You have visited " + localStorage['page'+pageID] + " time(s).";
  } else {
    document.getElementById("result").innerHTML = "Sorry, your browser does not support web storage...";
  }
}
</script>
</head>
<body>

<p><button type="button" id="button1">Hide</button></p>

<div id="result"></div>

<p>Close the browser tab (or window), and try again, and the counter will continue to count (is not reset).</p>


<script>
   var url  = window.location.pathname;
   var pageID = url.substr(url.lastIndexOf("/") + 1); //pageA, pageB
   visitCounter(pageID);
</script>
</body>
</html>

Есть идеи?

10000