2011-12-06 13 views
17

मैं jQuery में एक पूर्ण नौसिखिया हूं। मैं सीख रहा हूं, लेकिन एक क्रिसमस संदेश है कि मुझे उठने और किसी भी समय चलने की ज़रूरत नहीं है।केवल एक बार पॉपअप दिखाने के लिए एक jQuery कुकी सेट करें

मैं पृष्ठ के शीर्षक में इन शामिल किया है:

<script type="text/javascript" src="scripts/jquery-1.7.min.js"></script> 
<script type="text/javascript" src="scripts/jquery.cookies.2.2.0.min.js"></script>` 

तब संदेश एक jQuery पॉपअप का उपयोग कर इस प्रकार है। संदेश यह है:

<script type="text/javascript"> 
$(document).ready(function() { 
     var id = '#dialog'; 

     //Get the screen height and width 
     var maskHeight = $(document).height(); 
     var maskWidth = $(window).width(); 

     //Set height and width to mask to fill up the whole screen 
     $('#mask').css({'width':maskWidth,'height':maskHeight}); 

     //transition effect  
     $('#mask').fadeIn(1000);  
     $('#mask').fadeTo("slow",0.7); 

     //Get the window height and width 
     var winH = $(window).height(); 
     var winW = $(window).width(); 

     //Set the popup window to center 
     $(id).css('top', winH/2-$(id).height()/2); 
     $(id).css('left', winW/2-$(id).width()/2-220); 

     //transition effect 
     $(id).fadeIn(2000);  

    //if close button is clicked 
    $('.window .close').click(function (e) { 
     //Cancel the link behavior 
     e.preventDefault(); 

     $('#mask').hide(); 
     $('.window').hide(); 
    });  

    //if mask is clicked 
    $('#mask').click(function() { 
     $(this).hide(); 
     $('.window').hide(); 
    });  

}); 

</script> 

body में मैं संदेश डाल दिया है:

<div style="top: 199.5px; left: 200px; display: none;" id="dialog" class="window"> 
XMAS MESSAGE 
<a href="#" class="close">Shut this popup.</a> 
</div> 

अब तक तो अच्छा। अगला कदम मेरे लौटने वाले आगंतुकों को उसी संदेश के साथ बोर नहीं करना होगा (साठ दिनों के लिए स्थगित पर्याप्त होगा)।

तो मैं jQuery कुकी प्लग-इन का उपयोग कर एक कुकी सेट करना चाहते हैं:

function setCookie() { 
    $.cookie('test_status', '1', { path: '/', expires: 60 }); 
    return false; 
} 

कौन सा तो अगली बार पाया जाता है एक आगंतुक एक ही पृष्ठ हिट और क्रिसमस संदेश नहीं दिखाया गया है जब तक संदेश समाप्त हो रहा है ।

अब if-else कथन उच्च प्रकार के jQuery हैं जिन्हें मैं अभी तक परिचित नहीं हूं। तो, क्या कोई इसे मुझे समझा सकता है? इस तरह के

+0

अपने करीबी घटनाओं जब आप आग कुकी समारोह चलाते हैं। फिर अपने कोड के शीर्ष पर कुकी मूल्य के लिए एक चेक करें। यदि यह मौजूद है तो मोडल न दिखाएं। – Seth

+0

jQuery एक भाषा नहीं है, यदि उसके पास अन्य कथन नहीं हैं। यह सिर्फ जावास्क्रिप्ट कोड का एक गुच्छा है। जावास्क्रिप्ट में 'if-else' कथन [किसी भी प्रोग्रामिंग भाषा में सशर्त बयान] जैसे हैं (http://en.wikipedia.org/wiki/Conditional_ (प्रोग्रामिंग))। – Esailija

उत्तर

14

कुछ मदद की हो सकती है:

 
$(document).ready(function(){ 
    if ($.cookie('test_status') != '1') { 
    //show popup here 
    $.cookie('test_status', '1', { expires: 60}); } 
    }); 
+0

इसके लिए धन्यवाद, कुत्ते को उम्र के लिए काम करने की कोशिश करने के साथ कुश्ती रही। – lharby

+1

jquery.cookie का नाम बदलकर जेएस-कुकी को एक नए भंडार में रखा गया है: https://github.com/js-cookie/js-cookie। '$' (Jquery निर्भरता) को [संस्करण 2.0.0] में हटा दिया गया था (https://github.com/js-cookie/js-cookie/releases/tag/v2.0.0) –

2

आप इस

$(document).ready(function() { 
    if ($.cookie('test_status')) { 
     return; 
    } 

    //Rest of your code here 
}); 
0

मैं एक ही समस्या थी कोशिश कर सकते हैं और मैं इस समाधान पाया:

$(document).ready(function() { 
    var cookie = document.cookie; 
    if (cookie == "") { 
     //show popup depending on url 
     var url = window.location; 
     if (url != "http://localhost/test/jquery-popup.html") {          
      setTimeout(function() { 
       $.fn.colorbox({ html: '<div style="width:301px;height:194px;"><a href="http://livebook.in/"><img src="res/homer.jpg" style="width:301px;height:194px;" alt="The linked image" /></a></div>', open: true }); 
      }, 500); 
     }else { 
      setTimeout(function() { 
       $.fn.colorbox({html:'...', open:true}); 
      }, 500); 
     } 

     //set timeout for closing the popup 
     setTimeout(function() { $.fn.colorbox.close(); }, 3000); 

     //set cookie 
     var d = new Date(); 
     d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); //expire in 30 days 
     var expires = "expires=" + d.toGMTString(); 
     document.cookie = "apparsoYES" + "=" + "YES" + "; " + expires;  
    } 
}); 

इस स्क्रिप्ट पृष्ठ लोड पर एक पॉपअप बनाता है, ऑटो इसे बंद करता है, एक कुकी बनाता है ताकि पॉपअप केवल एक बार दिखाया जा सके और अलग दिखाया जा सके पृष्ठ

+0

ध्यान दें कि 'दस्तावेज़ । कुकी 'सभी कुकीज़ वापस कर देगा, न केवल आपके' apparsoYES 'कुकी –

0

मुझे लगता है कि आप क्या देख रहे हैं, जब कोई नया उपयोगकर्ता आपके Webpage पर जाता है, तो आप पॉप अप दिखाते हैं, लेकिन जैसे ही वह अन्य पृष्ठों के माध्यम से surfs, पॉप विंडो नहीं आना चाहिए।

इसकी बहुत, cookies के माध्यम से प्राप्त करने के लिए इस कोड को नमूना जांच के लिए आसान है, यह आप

में मदद मिलेगी तो मैं कोड का इस्तेमाल किया टुकड़ा (आप भी उसी के लिए नीचे दिए गए लिंक का पालन कर सकते हैं)

तो शामिल कर रहा हूँ , स्क्रिप्ट हिस्सा

var expDays = 1; // number of days the cookie should last 

var page = "only-popup-once.html"; 
var windowprops = "width=300,height=200,location=no,toolbar=no,menubar=no,scrollbars=no,resizable=yes"; 

function GetCookie (name) { 
var arg = name + "="; 
var alen = arg.length; 
var clen = document.cookie.length; 
var i = 0; 
while (i < clen) { 
var j = i + alen; 
if (document.cookie.substring(i, j) == arg) 
return getCookieVal (j); 
i = document.cookie.indexOf(" ", i) + 1; 
if (i == 0) break; 
} 
return null; 
} 
function SetCookie (name, value) { 
var argv = SetCookie.arguments; 
var argc = SetCookie.arguments.length; 
var expires = (argc > 2) ? argv[2] : null; 
var path = (argc > 3) ? argv[3] : null; 
var domain = (argc > 4) ? argv[4] : null; 
var secure = (argc > 5) ? argv[5] : false; 
document.cookie = name + "=" + escape (value) + 
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
((path == null) ? "" : ("; path=" + path)) + 
((domain == null) ? "" : ("; domain=" + domain)) + 
((secure == true) ? "; secure" : ""); 
} 
function DeleteCookie (name) { 
var exp = new Date(); 
exp.setTime (exp.getTime() - 1); 
var cval = GetCookie (name); 
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); 
} 
var exp = new Date(); 
exp.setTime(exp.getTime() + (expDays*24*60*60*1000)); 
function amt(){ 
var count = GetCookie('count') 
if(count == null) { 
SetCookie('count','1') 
return 1 
} 
else { 
var newcount = parseInt(count) + 1; 
DeleteCookie('count') 
SetCookie('count',newcount,exp) 
return count 
    } 
} 
function getCookieVal(offset) { 
var endstr = document.cookie.indexOf (";", offset); 
if (endstr == -1) 
endstr = document.cookie.length; 
return unescape(document.cookie.substring(offset, endstr)); 
} 

function checkCount() { 
var count = GetCookie('count'); 
if (count == null) { 
count=1; 
SetCookie('count', count, exp); 

window.open(page, "", windowprops); 

} 
else { 
count++; 
SetCookie('count', count, exp); 
    } 
} 

और निम्नलिखित डोम के शरीर हो जाएगा,

<BODY OnLoad="checkCount()"> 
है

http://www.jsmadeeasy.com/javascripts/Cookies/Only%20Popup%20Once/index.htm

1

पहले jquery लाइब्रेरी शामिल करें।

jquery में कुकीज़ के लिए निम्न स्क्रिप्ट शामिल करने के बाद।

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> 

अब पाद लेख में नीचे दिए गए कोड डाल:

$(document).ready(function() { 
     // initially popup is hidden: 
     $('#stay-in-toch.popup-outer').hide(); 
     // Check for the "whenToShowDialog" cookie, if not found then show the dialog and save the cookie. 
     // The cookie will expire and every 2 days and the dialog will show again. 
     if ($.cookie('whenToShowDialog') == null) { 
      // Create expiring cookie, 2 days from now: 
      $.cookie('whenToShowDialog', 'yes', { expires: 2, path: '/' }); 

      // Show dialog 
      $('#stay-in-toch.popup-outer').show();  
     } 
    }); 
+0

ग्रेट प्लगइन, उपयोग करने में आसान। दस्तावेज़ यहां पाए जा सकते हैं: https://github.com/carhartl/jquery-cookie#readme – HPWD