Cookie Popup cu fancybox nu functioneaza
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
adrian_ady
- Mesaje:80
Cookie Popup cu fancybox nu functioneaza
Salut,
am un popup cu fancybox care se afiseaza dupa 2 secunde si un cookie care se seteaza dupa 3 secunde pentru a preveni ulterioare afisari si nu inteleg de ce se sterge cookie-ul automat, dupa doua refresh-uri sau schimb de pagina. Unde sa fie greseala?
Cod: Selectaţi tot
<?
if(!isset($_COOKIE['popup-Onload']))
{?><div class="center" id="popup-onload" style="display: none;"><br />T E S T P O P U P O N L O A D<br /><br /></div>
<script>
$(document).ready(function openPopup() {
setTimeout(function () {
$("#popup-onload").fancybox().trigger('click');
}, 2000);
});
$(document).ready(function() {
setTimeout(function () {
var expDate = new Date();
expDate.setTime(expDate.getTime() + (24 * 60 * 60 * 1000)); // 1zi
document.cookie = "popup-Onload=already set; path=/; expires=" + expDate.toGMTString();
}, 3000);
});
</script>
<?}
?>
MarPlo
Mesaje:4343
Salut
Am testat acest cod intr-un fisier php, functioneaza cum trebuie; cookie-ul se mentine dupa refresh-uri. Il poti verifica intr-un fisier separat.
Cod: Selectaţi tot
<?php
if(!isset($_COOKIE['popup-Onload'])){
?>
<script>
setTimeout(function(){ alert('ok');}, 2000);
setTimeout(function(){
var expDate = new Date();
expDate.setTime(expDate.getTime() + (60 * 60 * 1000)); // 1zi
document.cookie = "popup-Onload=already set; path=/; expires=" + expDate.toGMTString();
}, 3000);
</script>
Cod JS
<?php
}
else echo $_COOKIE['popup-Onload'];
?>
Daca prin acel cod pe care l-ai postat se creaza cookie-ul, problema e in alta parte; in alt cod JS din pagina, sau probabil in scriptul php e o instructiune care sterge variabilele $_COOKIE.
adrian_ady
Mesaje:80
Multumesc, Marplo
prin metoda mea prezentata initial se creeaza cookie-ul, functioneaza totul perfect in afara de problema disparitiei cookie-ului. Am cautat deja ceeace mi-ai sugerat insa nu am gasit o explicatie. In site mai am si alte cookies insa toate sunt OK. Ramane sa caut in continuare, poate gasesc buba. O zi buna!
MarPlo
Mesaje:4343
- Daca acel cookie iti trebuie doar in JavaScript pentru pop-up, ai putea folosi acest cod ca sa nu mai depinda de php.
Cod: Selectaţi tot
<div class="center" id="popup-onload" style="display: none;"><br />T E S T P O P U P O N L O A D<br /><br /></div>
<script>
//return cookie value, or null if not set
function getCookie(name) {
var result = null;
var myCookie = ' ' + document.cookie + ';'; // toate sirurile de cookie incep cu spatiu si se incheie cu ;
var searchName = ' ' + name + '='; // se cauta tot ce e intre name si = urmator
var startOfCookie = myCookie.indexOf(searchName);
var endOfCookie;
if (startOfCookie != -1) { // daca gaseste ceva intre ele
startOfCookie += searchName.length; // omite nume cookie anterior
endOfCookie = myCookie.indexOf(';', startOfCookie);
result = unescape(myCookie.substring(startOfCookie, endOfCookie));
}
return result;
}
var cookie_popup = getCookie('popup-Onload');
//if cookie not set
if(!cookie_popup){
setTimeout(function(){ $('#popup-onload').fancybox().trigger('click');}, 2000); //show popup
//set cookie
setTimeout(function(){
var expDate = new Date();
expDate.setTime(expDate.getTime() + (24 *60 * 60 * 1000)); // 1zi
document.cookie = 'popup-Onload=already set; path=/; expires=' + expDate.toGMTString();
}, 3000);
}
else if(document.getElementById('popup-onload')) document.getElementById('popup-onload').outerHTML =''; //delete the #popup-onload elm
</script>
adrian_ady
Mesaje:80
OK, merge! Nu-mi dadusem seama ca ai inclus in script si timeout-ul pentru popup si se repeta. Acum l-am eliminat din forma initiala. Toate cele bune!
- Edit
M-am grabit sa spun ca merge insa ma bucur ca am gasit unde este greseala.
Solutia:
In footer aveam impostat pentru toate paginile:
Cod: Selectaţi tot
$(document).ready(function() {
setTimeout(function () {
$("#popup-onload").fancybox().trigger('click');
}, 2000);
});
am corectat:
Cod: Selectaţi tot
$(document).ready(function() {
$("#popup-onload").fancybox();
$.fancybox.wrap.bind("contextmenu", function (e) {
return false;
});
});
practic am eliminat de aici timeoutul si ".trigger('click')" ramanand aceasta sintagma numai in pagina care contine popupul si am adugat eliminare right click. Acum pare OK.
adrian_ady
Mesaje:80
Pur si simplu este o insaileala, functioneaza, dar nu este bine. Ce am corectat nu are nicio noima, nici la prima vedere codul nu are sens. Trebuie gasit ceva solid. Randul:
Cod: Selectaţi tot
$.fancybox.wrap.bind("contextmenu", function (e) { return false; });
nu ar trebui sa influenteze cu nimic functia, chiar nu este operativ (nu elimina click dreapta) dar fara el, ciudat, cookie-ul se sterge. Folosesc fancybox 2.1.5
MarPlo
Mesaje:4343
Vezi daca apare vreo eroare JS in consola, daca nu, incearca sa testezi retinerea cookie-ului cu un simplu alert() in loc de fancybox.
Daca functioneaza, inseamna ca de la fancybox e problema, daca tot la fel e, mai elimini din scripturi ca sa vezi de la care era cauza.
- Poti cauta si pe net: " fancybox right click ", poate nu e aplicata bine acea functi.
adrian_ady
Mesaje:80
De data asta am facut-o lata! Cookie Control functiona in fundal, eu uitasem ca este activat deci va dati seama unde era necazul... Cer scuze lui Marplo care s-a straduit sa ma ajute, mi-e tare rusine. Dupa ce mi-am dat seama de eroare am trecut 'popup-Onload' la cookies permise si incercat sa simplific cat mai mult ajungand la urmatoarea varianta 100% functionala:
Cod: Selectaţi tot
<?
if(!isset($_COOKIE['popup-Onload']))
{?><div class="center" id="popup-onload" style="display: none;">Test popup onload</div>
<script>
$(document).ready(function() {
setTimeout(function () {
$("#popup-onload").fancybox().trigger('click');
}, 2000);
var expDate = new Date();
expDate.setTime(expDate.getTime() + (24 * 60 * 60 * 1000)); // 1zi
document.cookie = "popup-Onload=already set; path=/; expires=" + expDate.toGMTString();
});
</script>
<?}
?>
Subiecte similare
- Link deschis in Popup modal
JavaScript - jQuery - Ajax
Primul mesaj
Salut,
nu gasesc cum sa fac un popup modal genul asta: solodev.com/blog/web-design/how-to-make-an-external-link-pop-up-modal.stml
Dar cand dau...
Ultimul mesaj
am gasit ceva dar nu e functional cum trebuie,momentan am facut asa
<a href= <?php echo /privat&who=$chat...