【问题标题】:Javascript to only show preloader once in a sessionJavascript 在会话中仅显示一次预加载器
【发布时间】:2020-06-25 22:36:44
【问题描述】:

目前我的预加载器在用户登陆主页时出现,这很好,但是我想了解如何确保每个会话只出现一次,所以如果您导航回主页,它不会再次发生,就像目前一样,每当主页加载时都会发生。

window.addEventListener("load", function () {
     const loader = document.querySelector(".loader");
     loader.className += " hidden";
});
.loader {
  position: fixed;
  z-index: 99;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #F4F4F4;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.loader img {
  width: 60px;
  height: 60px;
}

.loader.hidden {
  animation: fadeOut 1s;
  animation-delay: 3.5s;
  animation-fill-mode: forwards;
}

@keyframes fadeOut {
    100% {
      opacity: 0;
      visibility: hidden;
  }
}
<div class="loader">
    <img src="https://placehold.it/200x200" alt="">
    <h1>PENSACOLA</h1>
 </div>

【问题讨论】:

    标签: javascript caching loader


    【解决方案1】:

    您可以使用会话存储

    window.addEventListener("load", function () {
              if (!sessionStorage.viewed){
                  const loader = document.querySelector(".loader");
                  loader.className += " hidden";
                  sessionStorage.viewed = 1;
              }else{
                const loader = document.querySelector(".loader");
                loader.style.display = "none";
              }
    });
    

    说明: 页面加载后,if 语句将检查 sessionStorage 是否未设置为已查看(默认情况下,sessionStorage 未设置为已查看),在发现该语句为 true 后,您所需的代码将运行。运行代码后, sessionStorage.viewed = 1; 会将 sessionStorage.viewed 语句设置为 true。

    因此,如果您在同一会话中重新加载页面,则 if 语句将不会运行,因为我们之前将 sessionStorage.viewed 语句设置为 true。

    在您关闭会话之前,同样的事情会发生。

    【讨论】:

    • 感谢您的帮助和解释。我添加了以下代码,但是现在当我返回主页时(在隐身和普通选项卡中),加载页面动画继续运行并且不会淡出。
    • @LiamAtkins 感谢您分享您的经验。很快就会回来。
    • @LiamAtkins 我自己运行了代码,但没有发现任何问题。无论您做什么或导航到哪里,如果您在一个选项卡中完成所有活动,那么它应该可以工作。
    • 谢谢 Praneet,这是我网站的链接。当您导航回主页时,加载屏幕会再次出现并且不会淡出。 (pensacola.co.uk)。非常感谢您的帮助。
    • 我看过代码。您尚未实施该建议。尝试我上面在答案中建议的代码。(使用sessionStorage)。
    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2021-07-29
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    相关资源
    最近更新 更多