Pagina 1 din 1

Cookie Popup cu fancybox nu functioneaza

Scris: Sâm Dec 19, 2015
de adrian_ady
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 &nbsp; P O P U P &nbsp; O N &nbsp; 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>
<?}
?>

Cookie Popup cu fancybox nu functioneaza

Scris: Dum Dec 20, 2015
de MarPlo
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.

Cookie Popup cu fancybox nu functioneaza

Scris: Dum Dec 20, 2015
de adrian_ady
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!

Cookie Popup cu fancybox nu functioneaza

Scris: Dum Dec 20, 2015
de MarPlo
- 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 &nbsp; P O P U P &nbsp; O N &nbsp; 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>

Cookie Popup cu fancybox nu functioneaza

Scris: Dum Dec 20, 2015
de adrian_ady
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.

Cookie Popup cu fancybox nu functioneaza

Scris: Dum Dec 20, 2015
de adrian_ady
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

Cookie Popup cu fancybox nu functioneaza

Scris: Dum Dec 20, 2015
de MarPlo
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.

Cookie Popup cu fancybox nu functioneaza

Scris: Lun Dec 21, 2015
de adrian_ady
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>

<?}
?>