2016-04-12 4 views
0

Ich habe diese modal, die beim Laden der Seite Pop-up ...lädt Javascript nur einmal pro Benutzer/Browser-Sitzung

<script type="text/javascript"> 

jQuery(document).ready(function($) { 
    setTimeout(function() { 
    $.UIkit.modal('#newsletter-20').show(); 
    }, 3000); 
}); 

</script> 

Alle Arbeit ist in Ordnung, aber ich muß es nur einmal erscheint pro Benutzer/Browser-Sitzung. Da ich ein Noob bin, habe ich keine Ahnung, wie ich das erreichen kann, auch nachdem ich in diese Information geblickt habe. http://www.w3schools.com/js/js_cookies.asp

Tks für die Hilfe!

Antwort

0

Ermitteln, ob eine Benutzersitzung aktiv ist, erfordert serverseitigen Code. Daher ist die Verwendung eines Cookies wahrscheinlich die leichtere Lösung für Sie.

JSFIDDLE DEMO

$(document).ready(function() { 
    var cookieValue = $.cookie("user-session"); 

    if (!cookieValue || !cookieValue.length) { 
    setTimeout(function() { 
     $.UIkit.modal('#newsletter-20').show(); 
     $.cookie("user-session", "1"); 
    }, 3000); 
    } 
}); 

Hinweis: Für .cookie $, arbeiten Sie ein jQuery Cookie-Plugin verwenden. Die CDN-Link ist das - https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js

Aber dies ist optional, wenn Sie einen traditionellen Javascript Art und Weise des Erhaltens und Setzen eines Cookies möchten, können Sie es auch verwenden können. Aber der Jquery Cookie Weg ist viel einfacher.

+0

ich die jquery.cookie hinzugefügt haben .js aber wenn ich deinen Code setze, erhalte ich diesen Fehler: Uncaught TypeError: $ ist keine Funktion – Benix

+0

Ich habe die erste Codezeile mit diesem> jQuery (Dokument) geändert .ready (function ($) {und jetzt funktioniert es ... – Benix

0

Haben Sie sich sessionStorage angesehen? Unter Verwendung von sessionStorage können Sie lokal pro Sitzung ein einfaches boolesches Flag speichern und dann vor dem Anzeigen des modalen Dialogfelds das Vorhandensein dieses Flags testen.

Der Browser zeigt den Inhalt der sessionStorage löschen, wenn der Browser geschlossen wird, was bedeutet, dass der Wert wird nur so lange beibehalten, wie der Besucher aktiv ihr Browser verwendet oder bis Sie die Daten manuell auf einen Falsey Wert ändern zurück.

Zum Beispiel:

jQuery(document).ready(function($) { 

    setTimeout(function() { 

     if (!sessionStorage.previouslyVisited) { 
      $.UIkit.modal('#newsletter-20').show(); 
      sessionStorage.previouslyVisited = true; 
     } 
    } 

}); 
+0

Das Problem mit 'sessionStorage' ist, dass es verloren geht, sobald Sie den Browser schließen, aber die Benutzersitzung möglicherweise noch aktiv ist. – Krishna

+0

Sie können stattdessen 'localStorage' verwenden, wenn Sie möchten, dass die Daten für unbegrenzte Zeit beibehalten werden. (Der obige Code wäre der gleiche, außer dass "sessionStorage" durch "localStorage" ersetzt würde). Wenn sich der Benutzer abmeldet, können Sie den Wert "localStorage" manuell auf einen falschen Wert zurücksetzen. – Mark

+0

Wenn der Server eine Sitzung ohne Benutzeraktion ungültig machen kann, müssen Sie jedoch wahrscheinlich Cookies verwenden. – Mark