2017-02-02 7 views
1

Ich bin sehr neu in JavaScript und ich brauche Hilfe bei der Konfiguration dieses Codes, damit das Pop-up nur einmal pro Sitzung auftritt. Ich habe versucht, herumzualbern, um es zur Arbeit zu bringen, aber ich habe es nicht zur Arbeit gebracht. Bitte helfen Sie!Wie kann ich einmal pro Besuch ein JavaScript-Popup anzeigen?

Hier ist mein Code:

jQuery(document).ready(function(){ 

    jQuery('#preview_help').hide(); 


    jQuery('.mlab-close').on('click', function() { 
     //When clicking on the close or fade layer... 
     jQuery('.mlab-modal').fadeOut(function() { 
      jQuery('#mlab-modal-backdrops').hide(); 
     }); //fade them both out   
     return false; 
    }); 


    jQuery('#mlab_popup_preview').on('click', function() { 
     //reset 
     jQuery('.mlab-modal-title').html(''); 
     jQuery('.mlab-modal-body').html(''); 
     jQuery('.mlab-modal-label').val(''); 
     jQuery('.mlab-modal-link').attr("href", "#") 
     jQuery('.mlab-modal-footer').hide(); 
     jQuery('.mlab-modal-donotshow').hide(); 
     //get  
     var titre = jQuery('#popup_titre').attr('value'); 
     var text = jQuery('#popup_content').val(); 
     var width = jQuery('#popup_width').attr('value'); 
     var label = jQuery('#popup_label').attr('value'); 
     var url = jQuery('#popup_link').attr('value'); 
     var notshow = jQuery('#popup_donotshow').prop('checked') 
     //set 
     if (url.length > 0 && label.length > 0){ 
      jQuery('.mlab-modal-footer').show();   
     } 
     if(notshow){ 
      jQuery('.mlab-modal-donotshow').show(); 
     } 
     jQuery('.mlab-modal-title').html(titre); 
     jQuery('.mlab-modal-body').html(text); 
     jQuery('.mlab-modal-dialog').css("width", width+'px'); 
     jQuery('.mlab-modal-label').val(label); 
     jQuery('.mlab-modal-link').attr("href", url) 

     jQuery('.mlab-modal').fadeIn(); 
    }); 

    if (jQuery('#mlab_popup_preview').is(':disabled') == true){ 
      jQuery('#mlab_popup_preview').prop('disabled', false); 
      jQuery('#preview_help').hide(); 
     } 

    // Preview only available on text editor  
    jQuery('#popup_content-tmce').on('click', function() {   
     if (jQuery('#mlab_popup_preview').is(':disabled') == false){ 
      jQuery('#mlab_popup_preview').prop('disabled', true); 
      jQuery('#preview_help').show(); 
     } 
    }); 


    jQuery('#popup_content-html').on('click', function() {  
     if (jQuery('#mlab_popup_preview').is(':disabled') == true){ 
      jQuery('#mlab_popup_preview').prop('disabled', false); 
      jQuery('#preview_help').hide(); 
     } 
    }); 


    function readURL(input) { 
     if (input.files && input.files[0]) { 
      var reader = new FileReader(); 

      reader.onload = function (e) { 
       jQuery("#preview_image").attr("src", e.target.result); 
      } 
      reader.readAsDataURL(input.files[0]); 
     } 
    } 

    jQuery("#popup_img").change(function(){ 
     readURL(this); 
    }); 


    jQuery("#donotshow").change(function(){ 
     SetAjax('session', jQuery(this).prop('checked')); 
    }); 

    function SetAjax(tag, param){ 
     jQuery.ajax({ 
      method: "POST", 
      url: popup_object.ajax_url, 
      data: { tag: param } 
     })    
    } 

}); 
+0

Hallo Joseph. Denken Sie daran, dass Java und JavaScript zwei völlig unterschiedliche Sprachen sind, die nichts miteinander zu tun haben. Ich bearbeite deine Tags und deinen Titel. –

+0

Java hat nichts mit JavaScript zu tun – epascarello

+1

Mögliches Duplikat von [Popup nur einmal pro Besuch anzeigen] (http://stackoverflow.com/questions/41857227/display-popup-only-once-per-visit) –

Antwort

3

Sie haben kein Ajax benötigen eine Variable pro Sitzung speichern, wenn durch Sitzung meinen Sie jeden Zugriffszeit Benutzer der Seite und nicht eine Session-Server-Seite .

Moderne Browser verfügen über einen Speicher, den sie auf der Clientseite für einfache Datenspeicherung und -manipulation aufbewahren (keine sicheren Daten). Sie können versuchen, sessionStorage zu verwenden, die Daten speichert, während Benutzer Ihre Seite durchsuchen. Wenn die Seite geschlossen wird, gehen die Daten verloren:

var hasVisited = sessionStorage.getItem("hasVisited"); 

// If falsy, user didn't visited your page yet. 
if (!hasVisited) { 
    sessionStorage.setItem("hasVisited", true); 
    showPopup(); // Shows popup only once 
} 

Ihre Daten in sessionStorage gespeichert zu überprüfen, gehen Sie zu Ihrem Developer Tools (in Chrome 56: F12 -> Registerkarte Anwendung -> Session Storage (Menü links)) .

Diese feature is supported in allen modernen Browsern da draußen.

Beachten Sie, dass localStorage die Daten dauerhaft speichert. Wenn der Benutzer Ihre Seite schließt und morgen wieder zurückkehrt, wird das Popup nicht angezeigt, da die Daten weiterhin verfügbar sind. Es scheint nicht das gewünschte Verhalten zu sein.

Verwandte Themen