2016-08-10 1 views
2

Ich habe einen Overlay-Hintergrund beim Laden der Seite eingerichtet, aber ich brauche es nur einmal pro Benutzer laden, so dass Sie die Überlagerung nicht sehen nochmal. Jede Hilfe mit diesem würde sehr geschätzt werden. Hier ist mein Code ist:Pop-up beim Laden der Seite nur einmal laden pro Benutzer

<div class="overlay-bg"> 

    <div class="overlay-inner"> 
     <h2>To explore more simply...</h2> 

    <div class="col-xs-4"> 
     <p>Drag</p> 
     <img src="AW16/pages/AW16_Lookbook_Timeoutmessage_03_02_new.gif?$staticlink$" alt="Hit List" height="85" width="80"> 
    </div> 
    <div class="col-xs-4 middle-col"> 
     <p>or</p> 
    </div> 
    <div class="col-xs-4"> 
     <p>Use arrow</p> 
     <img src="AW16/pages/AW16_Lookbook_Timeoutmessage_05_02_new.gif?$staticlink$" alt="Hit List" height="85" width="123"> 
    </div> 
    <a class="close-btn-new">CLOSE</a> 

</div> 

<script type="text/javascript"> 
$(document).ready(function(){ 

// function to show our popups 
function showPopup(whichpopup){ 
if (document.cookie.replace(/(?:(?:^|.*;\s*)doSomethingOnlyOnce\s*\=\s*([^;]*).*$)|^.*$/, "$1") !== "true") { 
$('.overlay-bg').show(); //display your popup background and set  height to the page height 
document.cookie = "doSomethingOnlyOnce=true; expires=Fri, 31 Dec 9999 23:59:59 GMT"; 
} 
} 

// function to close our popups 
function closePopup(){ 
$('.overlay-bg').hide(); //hide the overlay 
} 


// hide popup when user clicks on close button or if user clicks  anywhere outside the container 
$('.close-btn-new, .overlay-bg').click(function(){ 
closePopup(); 
}); 


}); 
</script> 
+0

Sie möchten Popup nur einmal für jede Benutzersitzung anzeigen? –

+0

Ich meine jedes Mal, wenn Sie den Browser aktualisieren, danke – user3767554

Antwort

0

von der Seite aus, ich gehe davon aus Sie bedeuten nach die Seite aktualisieren Sie nicht wollen, es zu Erneut anzeigen. Zu diesem Zweck müssen Sie den Benutzerstatus über mehrere Seiten hinweg nachverfolgen. Sie müssen entweder die Informationen speichern, dass ein Benutzer die Seite in einer Datenbank gesehen hat, oder in einem Cookie, das bei der Aktualisierung der Seite persistent ist.

Sie können den Code finden Sie die Seite zu setzen, etwas nur einmal auf dem Mozilla MDN Website zu tun:

https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

code from mozilla site: 

function doOnce() { 
    if (document.cookie.replace(/(?:(?:^|.*;\s*)doSomethingOnlyOnce\s*\=\s*([^;]*).*$)|^.*$/, "$1") !== "true") { 
    alert("Do something here!"); 
    document.cookie = "doSomethingOnlyOnce=true; expires=Fri, 31 Dec 9999 23:59:59 GMT"; 
    } 
} 

EDIT: Ich habe einen Kern mit einem Arbeitsbeispiel. https://gist.github.com/kemiller2002/658e69a899e874e01026ba05f83f7454

+0

Danke für den Vorschlag Kev. Ich kämpfe darum, dies in mein Szenario umzusetzen. Bitte lesen Sie die bearbeitete Frage über – user3767554

+0

ok, eine Sekunde, und ich werde an einem Update arbeiten. – kemiller2002

+0

Also, wenn Sie sich den Code ansehen, den Sie gepostet haben, denke ich nicht, dass Sie showPopup überall anrufen. Wenn Sie Chrome zum Entwickeln verwenden und eine lokale Seite erstellen (die nicht über einen Webserver läuft), ignoriert Chrome das lokale Cookie. Versuchen Sie, zu FireFox zu wechseln, und sehen Sie, ob das Problem dadurch behoben wird. – kemiller2002

0

Versuchen Sie, die folgende

<script type="text/javascript"> 
$(document).ready(function(){ 

// function to show our popups 
function showPopup(whichpopup){ 
    if (typeof(localStorage.popupDisplayCount) == "undefined") { 
     localStorage.popupDisplayCount = 1; 
     $('.overlay-bg').show(); //display your popup background and set  height to the page height 
    } 
} 

// function to close our popups 
function closePopup(){ 
$('.overlay-bg').hide(); //hide the overlay 
} 


// hide popup when user clicks on close button or if user clicks  anywhere outside the container 
$('.close-btn-new, .overlay-bg').click(function(){ 
closePopup(); 
}); 


}); 
</script> 
+0

Hallo, das obige funktioniert nicht für mich, irgendwelche anderen Vorschläge? danke – user3767554