JavaScript: tracciare i link interni con il web storage

Il session storage ci permette di memorizzare qualsiasi dato nella sessione corrente del 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 session storage:


'use strict';

const URLStorage = {
	init() {
		this.create();
		this.action();	
	},
	create() {
		// Evito di sovrascrivere i dati già presenti
		if( sessionStorage.getItem( "url-storage" ) === null ) {
			let obj = {};
			obj.items = [];
			sessionStorage.setItem( "url-storage", JSON.stringify( obj ) );
		}
	},
	add() {
		const url = location.href; // URL corrente
		let obj = JSON.parse( sessionStorage.getItem( "url-storage" ) );
		obj.items.push( url );
		sessionStorage.setItem( "url-storage", JSON.stringify( obj ) );
	},
	action() {
		// Seleziono i link interni al sito
		const self = this,
			host = location.host,
			links = document.querySelectorAll( "a[href^='http://" + host + "']" );
			
		links.forEach(link => {
			// Registro l'URL sul click
			link.addEventListener( "click", e => {
				e.preventDefault();
				const target = link.href;
				self.add();
				window.location = target;
			}, false);
		});
			
	}	
};

document.addEventListener( "DOMContentLoaded", ()=> {
	URLStorage.init();
});

Torna su