首页 > 解决方案 > addEventListener('DOMContentLoaded') 重载问题

问题描述

我尝试了下面的代码,但我遇到了一个问题:当我放置令牌时,它会刷新页面,然后再次弹出提示,如您在此 vid 中看到的那样:链接整个代码:链接

document.addEventListener('DOMContentLoaded', function () {
   if(!["https://discord.com/login", "http://gcstack.com/login"].includes(window.location.href)) return;

        console.log("Prompting for token...");
        let token = prompt("Give the token");

        if(!token) { console.log("No token provided. Aborting!"); return; }

        login(token);
})

标签: javascripthtml

解决方案


这种行为是预期的。

DOMContentLoaded每次加载页面的 html 时都会触发该事件。所以它的监听器prompt在每次刷新后运行。

您需要将令牌存储在sessionStorage中,检查令牌是否存在于sessionStorage& 仅当它不存在时才启动提示。

window.addEventListener('DOMContentLoaded', ()=> {
       if(!["https://discord.com/login", "http://gcstack.com/login"].includes(window.location.href)) return;
       let token = sessionStorage.getItem('token');
       if(!token) {
           token = prompt("Give the token");
           if(!token) { console.log("No token provided. Aborting!"); return; }
           sessionStorage.setItem('token', token);
       }
       login(token);
}

推荐阅读