Usando o plugin de cookie jquery Eu tenho uma função muito simples assim:
demoPopupInit: function() {
// alert($.cookie("modal-popup"));
if (! $.cookie("modal-popup")) {
$.cookie("modal-popup",1) ;
}
if ( $.cookie("modal-popup") <= 3 ) {
// return;
var modal_cookie = $.cookie("modal-popup") ;
modal_cookie = modal_cookie++;
$("#intro_index").modal({backdrop:true});
$.cookie("modal-popup", modal_cookie );
}
},
}
Tenho certeza de que é um erro muito simples, mas minhas pobres habilidades em JS não me permitem entender por que alert()
no começo sempre vire 1
..
Eu também tentei
if (! $.cookie("modal-popup") == NULL) {
$.cookie("modal-popup",1) ;
Mas, claro, o problema não está presente e nenhum outro erro foi relatado no console. Meu objetivo é transformar o pop-up modal em apenas 3 primeiras visitas.
Respostas:
1 para resposta № 1Basta alterar o incremento pós para pré-incremento:
modal_cookie = modal_cookie++;
para
modal_cookie = ++modal_cookie;
O cookie também retorna um valor de string, para ser um uso seguro parseInt para comparar o valor int. e evite ler o cookie várias vezes, salve-o em uma variável.
Curto:
demoPopupInit: function() {
if (!$.cookie("modal-popup")) {
$.cookie("modal-popup",1) ;
}
var curval = parseInt($.cookie("modal-popup"));
if ( curval <= 3 ) {
// return;
$("#intro_index").modal({backdrop:true});
$.cookie("modal-popup", ++curval);
}
},
1 para resposta № 2
Experimentar:
if($.cookie("modal-popup").length < 1){
$.cookie("modal-popup",1);
}
Se o cookie não existir, o comprimento será -1, se o fizer, será 1 ou maior.