【问题标题】:How to show website preloader only once如何仅显示一次网站预加载器
【发布时间】:2021-08-18 22:25:02
【问题描述】:

我在我的网站上添加了一个预加载器,每次访问该网站时都会播放预加载器动画。我希望它在浏览域名时每次访问只播放一次 - 任何点击网站上的主页按钮或浏览器中的后退按钮我希望跳过预加载器。我希望它在新选项卡或新浏览器窗口中打开时显示。我尝试添加 cookie,但我仍然无法以某种方式正确连接它。

补充几点: 预加载器由 css @keyframes (.loader) 组成 - 它不是 .gif。

我的网站域是jonrouse.com 供参考。

HTML

<div class="preloader">
   <div class="loader">
        <div class="loader-inner"></div>
   </div>
</div>

CSS

.preloader {
    display:block;
    position:fixed;
    top:0;
    left:0;
    right:0;
    bottom:0;
    z-index:99;
    margin:0 auto;
}

JS

<script type="text/javascript">
    $(document).ready(function() {
        $(window).load(function() {
            function Preloader() {
                var preloader = $ ('.loader');
                preloader.delay(1000) .fadeOut (500);
                var preloader = $('.preloader');
                preloader.delay (1500) .slideUp(500);
            }
            Preloader();
        });
    });
</script>

任何帮助将不胜感激。如果您需要任何额外信息,请告诉我。

【问题讨论】:

  • 您说您尝试使用 cookie,但我在您的 javascript 中没有看到任何与此相关的内容。另外为了读者的清楚,您能否详细说明一下时间长度或所采取的行动,这表明您何时开始和停止访问?
  • 加载程序的存在有一个原因:昂贵的数据处理(图像、css、javascript 等)。为什么要隐藏加载器?例如,如果用户第二次访问您的页面,资产将被浏览器缓存。
  • @Taplar 我已经澄清了我认为的访问 - 至于 cookie,我不确定如何在 jQuery 中写出来。每次我尝试时,它似乎都没有做任何事情(除了破坏代码,使预加载永远持续下去)。
  • 您已说明加载程序何时不应显示。你还没有说明它什么时候应该再次显示。如果他们离开站点并返回,加载程序是否应该再次显示?如果他们关闭浏览器,再次打开它,然后转到您的网站,它应该再次显示吗?如果它们在您的页面上,但如果加载器再次显示,请打开另一个选项卡并转到您的页面?
  • @EleazarEnrique 在这种情况下,加载程序在美学上被用作网站的介绍过渡。我确实希望每次查看者从其域打开站点时都可以查看它,例如使用新标签页或浏览器。

标签: javascript jquery html css


【解决方案1】:

这是一个示例,说明您如何使用 sessionStorage 在每个标签或窗口每次访问时显示一次预加载器。

<script type="text/javascript">
$(document).ready(function() {
    $(window).load(function() {
        function Preloader() {
            var preloader = $ ('.loader');
            preloader.delay(1000) .fadeOut (500);
            var preloader = $('.preloader');
            preloader.delay (1500) .slideUp(500);
        }
        if ( ! sessionStorage.getItem( 'doNotShow' ) ) {
            sessionStorage.setItem( 'doNotShow', 'true' );
            Preloader();
        } else {
           $ ('.loader, .preloader').hide();
        }
    });
});
</script>

【讨论】:

  • 哇!出色的。所以事半功倍。我添加了代码,它在第一次访问时加载了预加载器页面,但现在连续访问只是无限期地加载预加载器,而不会删除它。不管怎样,非常感谢!我很感激帮助。我将继续尝试找出解决此问题的方法。
  • 抱歉 - 我只是稍微仔细阅读了您的代码。您必须让预加载器默认显示在您的 html 中。查看修改后的代码。
  • 你修好了!我已经为此工作了几个小时,我非常感谢它。谢谢! :)
  • 太棒了!由于预加载器在脚本隐藏它之前加载,所以仍然有一点闪光,所以可能会使用 fadeOut(100
  • setItem() 方法需要一个字符串作为键值,所以从技术上讲 true 应该是 'true',例如: sessionStorage.setItem( 'doNotShow', 'true' );
猜你喜欢
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多