An initial reading that is interesting:
Differences between localStorage Vs sessionStorage?
If you want the value between page sessions to persist, you should use localStorage
. From what I read, these values do not have by default how to set the lifetime, so for your case, since the value in the record is not important, you can store the value of the current timestamp and always check the amount of time that has passed since its creation until the current one in a new session. This check looks something like this:
// Verifica se existe o registro local:
if (localStorage.getItem("visualizado")) {
// Recupera o timestamp atual:
let now = Date.now();
// Calcula a diferença entre o atual e o registro:
let diff = now - localStorage.getItem("visualizado");
// Define o tempo (ms) que durará o registro:
let delay = 1*60*1000;
// Se a diferença for maior que o tempo de duração:
if (diff >= delay) {
// Remove o registro:
localStorage.removeItem("visualizado");
} else {
// Senão, exibe o tempo de vida restante (opcional):
console.log("Você já visualizou a imagem no último minuto. Volte em " + (delay - diff)/1000 + "s.");
}
}
The logic to display the image is basically the same, just changing the value persisted in the registry:
// Se não existir o registro:
if (!localStorage.getItem("visualizado")) {
// Exibe a imagem:
console.log("Imagem foi exibida.");
// Armazena o timestamp atual no registro:
localStorage.setItem("visualizado", Date.now());
}
See working in the JSBin , for a time of 1 minute.