Как установить или получить JavaScript несколько файлов cookie на основе html идентификаторов? - PullRequest
0 голосов
/ 03 марта 2020

Я сделал приложение для блога, в котором есть много статей. Я хочу установить куки для статей, которые пользователь нажимает. Таким образом, этот пользователь может видеть, какие статьи он посетил или прочитал. Я не храню куки на сервере. Файлы cookie устанавливаются на основании идентификатора статьи

.

1 Ответ

0 голосов
/ 03 марта 2020

прежде всего добро пожаловать в StackOverflow

На ваш вопрос, вы даже можете использовать localStorage для этого нет? Нет смысла использовать только Cookies, но все, что вам нужно сделать, это:

  • для каждой перезагрузки страницы, добавьте эту страницу в массив
  • , если вы хотите получить это значение прочитав массив

со временем, вы захотите добавить еще пару вещей

  • хранить только последние 10 посещенных страниц (так что вы не получите 100 ссылок)
  • не повторять страницы

добавление к localStorage немного проще, чем куки, как вы можете просто сделать window.localStorage.setItem(key, payload). ..

и вы прочитали бы var links = window.localStorage.getItem(key)

помните , что, как и файлы cookie, вам нужно сохранить как строку, выполнение .setItem('links', { a: 1 }) приведет к окончательному сохранению [Object Object]


если у вас есть что-то вроде:

var linksStorage = {
  KEY: 'visitedLinks',
  get: () => {
    var allLinks = window.localStorage.getItem(this.KEY)
    return JSON.parse(allLinks || '[]') // parse string or start with empty array
  },
  savePage: () => {
    var allLinks = this.localStorage.get()     // get all existing links
    allLinks.push({                            // append this page info
      id: window.location.query, 
      page: window.location.pathname
    })
    window.localStorage.setItem(
      this.KEY, JSON.stringify(allLinks))      // save back
  }
}

, то просто:

window.linksStorage.savePage()

добавит текущую страницу в список, и когда вам нужно прочитать:

window.linksStorage.get()

выдаст вам список в виде объекта Array


Добавляется после комментариев

var writeCookies = () => {
  var allCookies = window.document.cookie.split('; ') // split them all
  document.write("<ul>")
  allCookies.forEach(c => { // for each cookie
    var info = c.split('=') // name and value
    document.write(`<li><b>${info[0]}</b> -> ${info[1]}`)
  })
  document.write("</ul>")
}

и выполняется как writeCookies()

...