Il web storage ci permette di memorizzare qualsiasi dato nel browser. Questo è anche il caso delle pagine visitate all'interno di un sito.
Si tratta semplicemente di creare un array di URL e salvarlo nel web storage:
'use strict';
class URLStorage {
constructor() {
this.create();
this.action();
}
create() {
if(sessionStorage.getItem('url-storage') === null) {
const obj = {};
obj.items = [];
sessionStorage.setItem('url-storage', JSON.stringify(obj));
}
}
add(url) {
const obj = JSON.parse(sessionStorage.getItem('url-storage'));
obj.items.push(url);
sessionStorage.setItem('url-storage', JSON.stringify(obj));
}
action() {
const baseURL = location.protocol + '//' + location.host;
const links = document.querySelectorAll("a[href^='" + baseURL + "']");
const self = this;
links.forEach(link => {
link.addEventListener('click', e => {
e.preventDefault();
self.add(link.href);
window.location = link.href;
},false);
});
}
}
Registriamo un handler sul click dei link interni del sito per aggiungere l'URL all'array memorizzato nel web storage. Possiamo usare la classe appena definita in questo modo:
document.addEventListener('DOMContentLoaded', () => {
const urlStorage = new URLStorage();
});