为了账号安全,请及时绑定邮箱和手机立即绑定

如何修改代码使其不会在重新加载时运行?

如何修改代码使其不会在重新加载时运行?

ibeautiful 2023-08-10 11:03:46
这段代码,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>每 5 秒生成一个随机字符串。但是,当页面重新加载时,它会生成一个新字符串。我怎样才能让它在重新加载时不产生随机刺痛?由于查询有限,我没有得到任何搜索结果。
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

您可以使用LocalStorage.

代码可能如下所示:


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>


查看完整回答
反对 回复 2023-08-10
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信