0

This code,

function dec2hex(dec) {
    return dec < 10 ? "0" + String(dec) : dec.toString(16);
  }
  function generateId(len) {
    var arr = new Uint8Array((len || 40) / 2);
    window.crypto.getRandomValues(arr);
    return Array.from(arr, dec2hex).join("");
  }
  var random = generateId(64);
  document.getElementById("password").innerHTML = random;

setInterval(function() {
  function dec2hex(dec) {
    return dec < 10 ? "0" + String(dec) : dec.toString(16);
  }
  function generateId(len) {
    var arr = new Uint8Array((len || 40) / 2);
    window.crypto.getRandomValues(arr);
    return Array.from(arr, dec2hex).join("");
  }
  var random = generateId(64);
  document.getElementById("password").innerHTML = random;
}, 5000);
<div id="password"></div>

will generate a random string every 5 seconds. However, it generate a new string when the page is reloaded. How can I make it NOT generate a random sting on a reload? I have not gotten anything with searches due to the limited queries.

LegitCoder
  • 17
  • 5

1 Answers1

0

You may use LocalStorage.
The code may look like :

var lastTimeGenerated = window.localStorage.getItem('lastTimeGenerated') === null
    ? false
    : parseInt(window.localStorage.getItem('lastTimeGenerated'));
var generateInterval = 5000;

function dec2hex(dec) {
    return dec < 10 ? "0" + String(dec) : dec.toString(16);
}

function generateId(len) {
    var arr = new Uint8Array((len || 40) / 2);
    window.crypto.getRandomValues(arr);
    return Array.from(arr, dec2hex).join("");
}

function launchIntervalFnc() {
    intervalFnc();
    setInterval(intervalFnc, generateInterval);
}

function intervalFnc() {
    var random = generateId(64);
    document.getElementById("password").innerHTML = random;
    window.localStorage.setItem('lastTimePassword', random);
    window.localStorage.setItem('lastTimeGenerated', new Date().getTime());
}

if (lastTimeGenerated !== false && lastTimeGenerated + generateInterval > new Date().getTime()) {
    document.getElementById("password").innerHTML = window.localStorage.getItem('lastTimePassword');
    setTimeout(launchIntervalFnc, generateInterval - (new Date().getTime() - lastTimeGenerated));
} else {
    launchIntervalFnc();
}
<div id="password"></div>
Obzi
  • 2,384
  • 1
  • 9
  • 22