繁体   English   中英

加载div仅在引荐来源网址上可见

[英]loading div only visible on referrer

我要在网站上解决一个小问题。 我目前拥有它,以便当用户访问页面时在页面上方显示一个加载屏幕div,然后在设置的时间/页面加载后淡出,以较早者为准。 我希望此div仅在首次访问时出现,并且希望避免使用cookie或服务器端的任何东西。 据我了解,我想利用会话存储或引荐来源网址,但实现起来却没有成功。 而且,后续页面的显示屏幕不太醒目,加载速度也较慢,只有在会话中访问每个单独页面一次时,才需要关闭页面。 适用的代码是:

CSS:

.js div#preloader {
    position: fixed; 
    left: 0; 
    top: 0; 
    z-index: 1000; 
    width: 100%; 
    height: 100%; 
    overflow: visible;
    background-color: #202020;}

#preloader {
    z-index: 1000; }

js:

 jQuery(document).ready(function ($) {
 $(window).load(function () {
    setTimeout(function(){
        $('#preloader').fadeOut(1500, function () {
        });

    },5000);

   });  
});

因此,很可能我知之甚少。 我正在自学,不用多说,我有很多关于javascript的知识。 如果我在这里做过可怕的错误,这完全合理,或者需要一个有效的演示,请告诉我。

谢谢!

您可以使用sessionStorage对象完成所需的操作 在该对象中,您可以跟踪在当前会话中访问过哪些页面。

JavaScript可能会遇到的问题(我说这可能不是最佳方法的原因)是,在使用库时,在加载,解析和执行库的过程中始终会经过有限的时间。 这使您的“仅在首次访问时出现”要求在JavaScript中难以实现。 如果默认显示它并用库代码将其隐藏,则每次访问该页面时都会短暂显示。 如果默认情况下将其隐藏并使用库代码显示,则第一次访问该页面时,它将被短暂隐藏。

解决此问题的一种方法是使用嵌入式JavaScript,该JavaScript在预加载器的DOM定义后立即执行。 不利的一面是,您必须知道如何在没有jQuery之类的帮助的情况下编写跨浏览器的JavaScript。 在您的情况下,仅隐藏预加载器所需的JavaScript非常简单,不会出现任何跨浏览器问题。

我创建了一个简单的页面来演示该技术。 该页面的来源是:

<html>
<head>
<style>
#preloader {
    position: fixed; 
    left: 0; 
    top: 0; 
    z-index: 1000; 
    width: 100%; 
    height: 100%; 
    overflow: visible;
    color: white;
    background-color: #202020;
}
</style>
</head>
<body>
<div id="preloader">Preloader</div>
<script>
if (sessionStorage[location.href]) {
    document.getElementById('preloader').style.display = 'none';
}
sessionStorage[location.href] = true;
</script>
<p>This is the text of the body</p>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(function () {
    setTimeout(function(){
        $('#preloader').fadeOut(1500);
    }, 5000);
});
</script>
</body>
</html>

我还为此创建了一个小提琴: http : //jsfiddle.net/cdvhvwmm/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM