2016-07-10 9 views
0

Ziemlich neu zu Javascript und Web-Entwicklung im Allgemeinen, nur auf der Suche nach etwas Hilfe mit dem Laden/Übergang DIVs ich auf einer Website haben.Zeigen Sie ein Laden div einmal pro Besuch, danach ein anderes Laden div

Ich benutze die jquery unten, um ein Intro auf der Homepage und das gleiche Skript auf anderen Seiten (mit einer kürzeren Ausblendung und anderen div) anzuzeigen, um eine Art Übergang zu imitieren. Auf der Homepage möchte ich nur das Intro div einmal pro Session oder Set-Periode zeigen, aber anstatt dazwischen nichts anzuzeigen, möchte ich es für das andere 'transition' div tauschen, das ich auf anderen Seiten verwende.

Ich schaute auf die Verwendung von Cookies und Session-Speicher, hatte aber kein Glück, viel zu arbeiten, speziell dafür. Jede Hilfe wäre großartig, danke!

$(window).load(function() { 
    setTimeout(function(){ 
     $('#splash').fadeOut('slow', function() { 
     }); 
    },1200); 
}); 

UPDATE

Nach dem Vorschlag von @brad mit dem ist, was ich am Ende mit und funktioniert perfekt für das, was ich erreichen wollte.

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); 
}  

});

+1

Java hat nichts mit JavaScript zu tun. Wie das Sprichwort sagt, ist Java zu JavaScript als Car ist zu Teppich. Und Sie sollten uns wirklich zeigen, was Sie versucht haben, damit wir Ihnen helfen können. – Brad

Antwort

0

LocalStorage ist der geeignete Ort für clientseitige Variablen, die Sie verwenden müssen. Es ist auch very well supported.

Um eine Variable im lokalen Speicher gesetzt, es ist nur gesetzt, wie so:

localStorage.yourVariable = "some value"; 

Beachten Sie, dass alle lokalen Speichervariablen Strings sind. Wenn Sie einen Nicht-String-Wert eingeben, wird dieser in eine Zeichenfolge umgewandelt. Aus diesem Grund ist es sehr üblich JSON mit lokalem Speicher zu lesen/schreiben.

localStorage.config = JSON.serialize({ 
    exampleSetting1: true, 
    exampleSetting2: false 
}); 

Dann, wenn Sie wollen wieder die Daten bekommen ...

console.log(JSON.parse(localStorage.config)); 

Zum Glück in Ihrem Fall ein, oder alles keine Rolle spielt. Sie müssen nur die Variable auf etwas setzen.

localStorage.shownSplashScreen = true; 

Dann zu testen, ob Sie den Begrüßungsbildschirm gezeigt haben:

!!localStorage.shownSplashScreen; // true if shown, false if not 

Auch hier ist der Wert in localStorage.shownSplashScreen ein String mit dem Wert von true, kein boolean. Durch die Verwendung von !! werden wir effektiv in Boolean umgewandelt und erkennen, ob diese Variable einen truthigen Wert hat (was der String "true" ist).

Ich erwähne all dies, damit Sie einige dieser Dinge sehen können, wenn Sie nicht damit vertraut sind. Die Endlösung ist ziemlich einfach.aber ungetestet versuchen Sie dies:

$(window).load(function() { 
    setTimeout(function() { 
     $('#splash').fadeOut('slow');  
    }, (!!localStorage.shownSplashScreen) ? 0 : 1200); 
    localStorage.shownSplashScreen = true; 
}); 

Alles, was wir hier tun, ist das Splash-Screen Zeit von 1200 ms gesetzt, wenn wir es nicht gezeigt haben, und 0 ms, wenn wir (die die Funktion ausführen, wird es zu verstecken, sobald diese Call Stack ist abgeschlossen).

+0

Danke für die Auflistung all dies! Ich habe deine Lösung ausprobiert und es funktioniert, obwohl du nach dem ersten Start immer noch einen 200ms Flash von dem #splash bekommst, wenn du zur Seite zurückkehrst. Dies könnte tatsächlich als Alternative funktionieren, aber interessiert, um zu sehen, ob ich es irgendwie dazu bringen kann, ein 'Übergangs'-Div zu bedienen, sobald das' Intro'-Div bedient wurde. Würde die Verwendung von Sitzungsspeicher damit auch funktionieren? Suchen nach etwas, das jeden Besuch oder Zeitraum zurücksetzt. Danke noch einmal! – Jord

+0

@Jord Ja, Ihr Begrüßungsbildschirm ist auf der Seite vorhanden, bis JavaScript ihn entfernen kann. Wenn Sie das nicht möchten, kann Ihr Begrüßungsbildschirm zunächst nicht einmal auf der Seite angezeigt werden. Das heißt, anstatt es mit JavaScript zu verstecken, wenn es bereits gesehen wurde, zeigen Sie es mit JavaScript, wenn es nicht gesehen wurde. Diese Art besiegt den Zweck, einen Splash-Bildschirm zu haben, aber Sie können es funktionieren lassen, wie Sie wollen. Was das Timing anbetrifft, setzen Sie, anstatt "wahr" in diese Variable zu setzen, einfach einen Zeitstempel für den letzten Zeitpunkt. Dann können Sie testen, wie lange der Zeitstempel bereits geladen war. – Brad

+0

Ye Ich dachte, dass das der Fall war, fragte sich, ob es Platzierung ist, macht einen Unterschied. Ich habe local in Session in das Skript getauscht und funktioniert ziemlich gut als alternative Option für mich, also danke für die Hilfe! Ist es einfach genug, ein anderes Div zu verwenden, nachdem das ursprüngliche div angezeigt wurde, anstatt den Splash zu entfernen? Nachdem Sie # splash1 angezeigt haben, verwenden Sie # splash2 bis zum Ende der Sitzung. – Jord

Verwandte Themen