Arrêtez div de montrer plus d’une fois par session ou visite

J’ai une fonction JS qui montre un message div sur doc prêt et le cache ensuite si le lien ‘fermer’ est cliqué.

Je souhaite afficher ce message div une seule fois par visite sur la première page visitée par l’utilisateur, puis jamais pour aucune autre page du site par la suite.

Au moment où un utilisateur clique sur une autre page du site, le message div s’affiche à nouveau, ce qui est évidemment agaçant pour tout le monde.

J’ai regardé ‘un’ dans jQuery mais je ne sais pas comment le mettre en œuvre avec ma faible connaissance de JS.

 $(document).ready(function(){ $("div#panel").hide(); var autoTimer = null; autoTimer = setTimeout(function(){ $("div#panel").slideDown("slow"); },1000); $("#close").click(function(){ $("div#panel").slideUp("slow"); if(autoTimer) clearTimeout(autoTimer); autoTimer = null; $("div#close").css("display","none"); }); });  

Créez une clé localStorage , définissez-la lorsque l’utilisateur accède à la page et supprimez-la lorsque l’utilisateur quitte la page:

 //On user coming to page: //Check localStorage on each page visit, if it's null, show your div if (!localStorage.getItem("visited")) { //show the div //Set the key localStorage.setItem("visited", "true"); } //clear localStorage on tab close window.onbeforeunload = function() { localStorage.removeItem("visited"); }; 

J’ai eu un problème similaire dans lequel je voulais afficher une boîte de message une fois que l’utilisateur survole une div particulière. J’ai utilisé le stockage local comme suit:

 $(function() { //set a variable  in localStorage on page load localStorage.setItem("visited", "false"); //once the mouse is hovered over the  $(".maindiv").mouseenter(function(){ //get the variable value from local storage and compare it var visit=localStorage.getItem("visited"); if(visit==="false") { $(".slide-msg").show(); //set visited to true localStorage.setItem("visited","true"); } }); }); 

J’ai personnellement utilisé ceci:
https://github.com/js-cookie/js-cookie
Comme tel:

 //import main js to use this method:  $(document).ready(function(){ //if visited cookie does not equal true, so its first visit: if(Cookies.get('visited') != 'true') { console.log("first visit"); //after doing what we want on first visit, we set cookie to true Cookies.set('visited', 'true', { expires: 7 }); } else { //so if first visit cookie is true, we do the following: console.log("not first visit"); } }); 

Je n’ai pas essayé, mais ils ont aussi une version jQuery:
https://github.com/carhartl/jquery-cookie
J’ai découvert les deux méthodes de:
http://www.elecsortingctoolbox.com/jquery-cookies/
Un lien posté à partir d’une question similaire:
https://stackoverflow.com/a/8757487/4651567

Cela sera persistant tant que le cache des navigateurs Web n’est pas effacé.

Voici mon lien de référence: http://www.w3schools.com/html/html5_webstorage.asp

Vous pouvez essayer ceci:

 $(document).ready(function(){ // Checks to see if it is the first visit on browser open if(sessionStorage.firstVisit != true) { // Stores visit sessionStorage.firstVisit = true; $('#panel').show(); } else { $('#panel').hide(); } $("#close").click(function(){ $("#panel").hide(); }); }); 

Le stockage de session restra chargé à chaque visite sur le site Web.

Une autre solution serait de le garder pour toujours, donc si vous voulez qu’ils le voient uniquement s’il s’agit de leur toute première visite sur le site Web à partir de cette machine:

 $(document).ready(function(){ // Checks to see if it is the first visit on browser open if(localStorage.firstVisit != true) { // Stores visit localStorage.firstVisit = true; $('#panel').show(); } else { $('#panel').hide(); } $("#close").click(function(){ $('#panel').hide(); }); }); 

Si vous utilisez le stockage de session, vous pouvez définir une valeur pour déterminer si une page donnée a été visitée au cours de cette session. Mais puisqu’il s’agit d’une fonctionnalité HTML 5, vous devrez toujours utiliser des cookies pour gérer IE.

   
First Page View