我做了一个博客应用程序,里面有很多文章。我想设置用户点击文章的cookie。以便用户可以看到他/她访问或阅读了哪些文章。我没有在后端存储cookie。Cookie是基于文章id设置的
发布于 2020-03-03 16:17:05
首先,欢迎来到StackOverflow
从你的问题看,你甚至可以利用localStorage
做到这一点,不是吗?只使用Cookie是没有意义的,但您需要做的就是:
对于每次重新加载的页面,请将该页面追加到
随着时间的推移,您可能需要添加更多内容
不重复页面
添加到localStorage
比cookies简单一点,因为您可以只执行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()
用户身份执行
https://stackoverflow.com/questions/60511311
复制