Skrypt o ciasteczkach - problem


(hatezit) #1

Witam,
Mam pytanie, dlaczego ten skrypt nie zapamiętuje ciasteczek? Co zamknę kartę, to jest info. Oto skrypt:

<script>
 $().ready(function() {
    var sName = "cookiesok";
    $("#close-cookie-info").click(function(){
        var oExpire = new Date();
        oExpire.setTime((new Date()).getTime() + 3600000*24*365);
        document.cookie = sName + "=1;expires=" + oExpire;
        $("#cookie-info").hide();
    });
 
    var sStr = '; '+ document.cookie +';';
    var nIndex = sStr.indexOf('; '+ escape(sName) +'=');
    if (nIndex === -1) {
        $("#cookie-info").show();
    }
});
</script>

A tu odwołanie do przycisku:

    <div id="cookie-info">
        <p><strong>UWAGA!</strong> Info  o ciasteczkach
        <a href="javascript:void(0);" id="close-cookie-info"
        >Akceptuję</a>
</div>

(Fizyda) #2

Czy przypadkiem #cookie-info nie jest domyślnie widoczne? Powinno być ukryte i w tym może być problem.


(hatezit) #3

ehh zapomniałem jeszcze dodać kodu CSS, proszę zobacz i napisz, gdzie jest błąd.
#cookie-info{
background: #66001a;
position: fixed;
width:100%;
bottom: 0;
margin: 0;
padding: 10px;
display: none;
z-index: 99;
}

#cookie-info a{
    color: #fff;
}
 
#cookie-info p{
    font-size: 16px;
    color: #fff;
}

#close-cookie-info{
	text-decoration:none;
	background-color:#00b300;
	padding: 4px;
	border-radius: 4px;
}
#close-cookie-info:hover{
	text-decoration:none;
	background-color:#36d900;
	padding: 4px;
	border-radius: 4px;
}

(krystian3w) #6

Może ten kod z 2014 czy nawet starszy to bubel? http://forum.php.pl/lofiversion/index.php/pl/t228004.html

Niby znalazłem skąd pochodzi, ale demo nie chce działać - treść mieszana jak widzę, dopuścimy jQuery po HTTP i komunikat po zamknięciu nie wraca przez “rok”.

https://www.altcontroldelete.pl/artykuly/jak-szybko-prosto-i-bezplatnie-dodac-do-strony-monit-o-ciasteczkach/


Demo pod twoje modyfikacje, pamiętaj o jQuery 1.9.1 lub nowszym jak ruszy z nim gotowiec:

https://jsfiddle.net/Lu2jrfxd/

Powrotem po kliknięciu run, bym się przejmował jakby realnie na stronie nie zamykało w innych częściach np. domena.pl/sklep/, domena.pl/blog/ czy gdzieś indziej, gdzie ci taka budowa linka nie przeszkadza a szablon ten sam.


(hatezit) #7

Zgadza się, ten skrypt pochodzi z tej strony i też o tym zapomniałem napisać, lecz aż tak dobrze nie znam JS, aby pisać takie skrypty. Próbowałem na generatorach, ale jednak wolę kod, gdzie mogę coś zmienić. Ja z tym kodem mam najnowszą wersję JQuery i nie chce działać. Tylko mogę zamykać za każdym otwarciem strony.


(krystian3w) #8

Mnie na normalnej stronie działa, nie wiem jedynie czemu wczoraj to ruszało na jsfiddle - czyżby jakaś różnica w Firefox 61?

Działa też jak zrobiłem domena.pl/cookies/cookies.html


<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title></title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="robots" content="noindex, nofollow">
  <meta name="googlebot" content="noindex, nofollow">
  <meta name="viewport" content="width=device-width, initial-scale=1">


  <script type="text/javascript"  src="//code.jquery.com/jquery-1.9.1.js"></script>


  <style type="text/css">
    #cookie-info {
  background: #66001a;
  position: fixed;
  width: 100%;
  bottom: 0;
  margin: 0;
  padding: 10px;
  display: none;
  z-index: 99;
}

#cookie-info a {
  color: #fff;
}

#cookie-info p {
  font-size: 16px;
  color: #fff;
}

#close-cookie-info {
  text-decoration: none;
  background-color: #00b300;
  padding: 4px;
  border-radius: 4px;
}

#close-cookie-info:hover {
  text-decoration: none;
  background-color: #36d900;
  padding: 4px;
  border-radius: 4px;
}
  </style>

  <script type="text/javascript">


    $(window).load(function(){
      
$().ready(function() {
  var sName = "cookiesok";
  $("#close-cookie-info").click(function() {
    var oExpire = new Date();
    oExpire.setTime((new Date()).getTime() + 3600000 * 24 * 365);
    document.cookie = sName + "=1;expires=" + oExpire;
    $("#cookie-info").hide();
  });

  var sStr = '; ' + document.cookie + ';';
  var nIndex = sStr.indexOf('; ' + escape(sName) + '=');
  if (nIndex === -1) {
    $("#cookie-info").show();
  }
});


    });

</script>

<section id="cookie-info">
  <p><strong>UWAGA!</strong> Niniejsza strona wykorzystuje pliki cookies. Informacje uzyskane za pomocą cookies wykorzystywane są głównie w celach statystycznych. Pozostając na stronie godzisz się na ich zapisywanie w Twojej przeglądarce.
    <a href="javascript:void(0);" id="close-cookie-info">Zamknij ostrzeżenie</a></p>
</section>
</html>

(hatezit) #9

Tylko ja nie sprawdzam na hostingu a na kompie (nie localhost) i nie działa. Zanim wrzucę na stronę, to zmienię zmienne i porobię osobne linie kodu.


(krystian3w) #10

Może statycznie (bez localhost / serwera) się nie dać i “html playgorundy” się do tego może nie specjalnie nadają :thinking:.

Na pewno nie działa jako statyczny plik odpalany z jakiegoś folderu (z dysku lokalnego / zmapowanego), prędzej w localhost (uruchomiłem, wyłączyłem bloker reklam i mam komunikat, klikam nie wraca przez “rok”).


(Fizyda) #11

Ciastka są na domenę - choćby localhost, więc skoro uruchamiasz z pliku, a nie z serwera (domeny) to cookie nie zadziała.


(hatezit) #12

Faktycznie i zgadzam się. Ehh taka podstawa a tu dałem ciała. Po prostu o tym zapomniałem.