每次访问显示一次加载 div,之后显示不同的加载 div
Show a loading div once per visit, thereafter, a different loading div
对 Javascript 和一般的 Web 开发还很陌生,只是想寻求一些有关我在网站上的加载/转换 DIV 的帮助。
我使用下面的 jquery 在主页上显示介绍,在其他页面上使用相同的脚本(淡出较短且 div 不同)来模仿某种过渡。在主页上,我只想在每个会话或设定的时间段内显示一次介绍 div,但是我不想在两者之间不显示任何内容,而是想将其换成另一个 'transition' div 我在其他页面上使用。
我考虑过使用 cookie 和会话存储,但没有运气专门为此工作。任何帮助都会很棒,谢谢!
$(window).load(function () {
setTimeout(function(){
$('#splash').fadeOut('slow', function () {
});
},1200);
});
更新
在使用@brad 的建议后,这就是我最终使用的,并且完美地实现了我想要实现的目标。
HTML
<div id="preloader">
<div id="splash1">
</div>
<div id="splash2">
</div>
</div>
CSS
#splashback {
display: none;
}
#splashback2 {
display: none;
}
JQUERY
$(document).ready(function(){
if (sessionStorage.getItem('splash') !== 'true') {
$( "#splash1" ).show();
setTimeout(function(){
$('#preloader').fadeOut('slow', function () {
});
},2500);
sessionStorage.setItem('splash','true');
}
else {
setTimeout(function(){
$( "#splash2" ).show();
$('#preloader').fadeOut('slow', function () {
});
},500);
}
});
LocalStorage 是您需要使用的仅客户端变量的合适位置。也是very well supported.
要在本地存储中设置变量,只需这样设置:
localStorage.yourVariable = "some value";
请注意,所有本地存储变量都是字符串。如果您放入一些非字符串值,它将被转换为字符串。因此,read/write JSON 使用本地存储非常常见。
localStorage.config = JSON.serialize({
exampleSetting1: true,
exampleSetting2: false
});
然后当你想取回数据时...
console.log(JSON.parse(localStorage.config));
幸运的是,在您的情况下,类型或任何内容都无关紧要。您只需要将变量设置为某些内容即可。
localStorage.shownSplashScreen = true;
然后,测试您是否显示了启动画面:
!!localStorage.shownSplashScreen; // true if shown, false if not
同样,localStorage.shownSplashScreen
中的值是一个字符串,其值为 true
,而不是布尔值。通过使用 !!
,我们有效地转换为布尔值,并检测该变量是否具有真值(字符串 "true" 是)。
我提到所有这些是为了让您可以查看其中的一些内容(如果您不熟悉的话)。最终解决方案非常简单。未经测试但试试这个:
$(window).load(function () {
setTimeout(function () {
$('#splash').fadeOut('slow');
}, (!!localStorage.shownSplashScreen) ? 0 : 1200);
localStorage.shownSplashScreen = true;
});
我们在这里所做的就是将启动画面时间设置为 1200
毫秒,如果我们没有显示它,如果我们有 0
毫秒(这将执行隐藏它的功能一次此调用堆栈已完成。
对 Javascript 和一般的 Web 开发还很陌生,只是想寻求一些有关我在网站上的加载/转换 DIV 的帮助。
我使用下面的 jquery 在主页上显示介绍,在其他页面上使用相同的脚本(淡出较短且 div 不同)来模仿某种过渡。在主页上,我只想在每个会话或设定的时间段内显示一次介绍 div,但是我不想在两者之间不显示任何内容,而是想将其换成另一个 'transition' div 我在其他页面上使用。
我考虑过使用 cookie 和会话存储,但没有运气专门为此工作。任何帮助都会很棒,谢谢!
$(window).load(function () {
setTimeout(function(){
$('#splash').fadeOut('slow', function () {
});
},1200);
});
更新
在使用@brad 的建议后,这就是我最终使用的,并且完美地实现了我想要实现的目标。
HTML
<div id="preloader">
<div id="splash1">
</div>
<div id="splash2">
</div>
</div>
CSS
#splashback {
display: none;
}
#splashback2 {
display: none;
}
JQUERY
$(document).ready(function(){
if (sessionStorage.getItem('splash') !== 'true') {
$( "#splash1" ).show();
setTimeout(function(){
$('#preloader').fadeOut('slow', function () {
});
},2500);
sessionStorage.setItem('splash','true');
}
else {
setTimeout(function(){
$( "#splash2" ).show();
$('#preloader').fadeOut('slow', function () {
});
},500);
}
});
LocalStorage 是您需要使用的仅客户端变量的合适位置。也是very well supported.
要在本地存储中设置变量,只需这样设置:
localStorage.yourVariable = "some value";
请注意,所有本地存储变量都是字符串。如果您放入一些非字符串值,它将被转换为字符串。因此,read/write JSON 使用本地存储非常常见。
localStorage.config = JSON.serialize({
exampleSetting1: true,
exampleSetting2: false
});
然后当你想取回数据时...
console.log(JSON.parse(localStorage.config));
幸运的是,在您的情况下,类型或任何内容都无关紧要。您只需要将变量设置为某些内容即可。
localStorage.shownSplashScreen = true;
然后,测试您是否显示了启动画面:
!!localStorage.shownSplashScreen; // true if shown, false if not
同样,localStorage.shownSplashScreen
中的值是一个字符串,其值为 true
,而不是布尔值。通过使用 !!
,我们有效地转换为布尔值,并检测该变量是否具有真值(字符串 "true" 是)。
我提到所有这些是为了让您可以查看其中的一些内容(如果您不熟悉的话)。最终解决方案非常简单。未经测试但试试这个:
$(window).load(function () {
setTimeout(function () {
$('#splash').fadeOut('slow');
}, (!!localStorage.shownSplashScreen) ? 0 : 1200);
localStorage.shownSplashScreen = true;
});
我们在这里所做的就是将启动画面时间设置为 1200
毫秒,如果我们没有显示它,如果我们有 0
毫秒(这将执行隐藏它的功能一次此调用堆栈已完成。