webForumDet fria alternativet

Javacookie funktion...

10 svar · 774 visningar · startad av gabbo

gabboMedlem sedan okt. 200534 inlägg
#1
function writeCookie(name, data, noDays){
  var cookieStr = name + "="+ data
  if (writeCookie.arguments.length > 2){
    cookieStr += "; expires=" + getCookieExpireDate(noDays)
    }
  document.cookie = cookieStr
}

function readCookie(cookieName){
   var searchName = cookieName + "="
   var cookies = document.cookie
   var start = cookies.indexOf(cookieName)
   if (start == -1){ // cookie not found
     return ""
     }
   start += searchName.length //start of the cookie data
   var end = cookies.indexOf(";", start)
   if (end == -1){
     end = cookies.length
     }
   return cookies.substring(start, end)
}

function blocking(nr, cookie, vis_state)
{
        if (document.layers)
        {
                current = (document.layers[nr].display == 'none') ? vis_state : 'none';
                if (cookie != '')
                        writeCookie(nr, current);
                document.layers[nr].display = current;
        }
        else if (document.all)
        {
                current = (document.all[nr].style.display == 'none') ? vis_state : 'none';
                if (cookie != '')
                        writeCookie(nr, current);
                document.all[nr].style.display = current;
        }
        else if (document.getElementById)
        {
                display = (document.getElementById(nr).style.display == 'none') ? vis_state : 'none';
                if (cookie != '')
                        writeCookie(nr, display);
                document.getElementById(nr).style.display = display;
        }
}

<a href="javascript:;" onClick="blocking('picinfo','yes', 'block'); return false;" title="Visa/dölj objektinformation">Visa/dölj objektinformation</a>

<div id="picinfo" style="display: none;">
Tjofaderittan...
</div>

Denna funktion fungerar helt perfekt på en sida jag hittat på internet, men jag får den inte att fungera på min sida... saknas det något?

/g

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Hej!

Jag antar att du vill att <div>en skall visas automagiskt vid sidladdning om länken klickats på? Då behöver du lägga till någonting i stil med

window.onload = function()
{ var c = readCookie("picinfo");
  if (c.length) document.getElementById("picinfo").style.display = c;
}
gabboMedlem sedan okt. 200534 inlägg
#3

Peter S skrev:

Hej!

Jag antar att du vill att <div>en skall visas automagiskt vid sidladdning om länken klickats på? Då behöver du lägga till någonting i stil med

window.onload = function()
{ var c = readCookie("picinfo");
  if (c.length) document.getElementById("picinfo").style.display = c;
}

Nä.. div'en skall vara stängd från början, när man klickar på länken så öppnas div'en och skall vara öppen under hela sessionen.. eller om man klickar på länken så skall den stängas igen...

Detta fungerar jättebra på sidan där jag hittade funktionen, men när jag testar min sida så stängs div'en när jag laddar om sidan, den borde läsa kakan, det är ju samma session...

Testa http://coppermine-gallery.net/demo/cpg14x/displayimage.php?album=29&pos=4

Det är en liten infoknapp uppe till vänster som öppnar ett "fönster" längre ner på sidan..

/gert

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Då kommer mitt kodförslag att göra susen! Skillnaden mellan deras sätt och ditt är att de använder PHP för att läsa kakan; sedan skriver de 'display: block' eller 'display: none' i <div>en beroende på värdet i den. Om du öppnar <div>en, navigerar till en annan sida och navigerar tillbaka igen skall du se att den är öppen.

Testa!

gabboMedlem sedan okt. 200534 inlägg
#5

Peter S skrev:

Då kommer mitt kodförslag att göra susen! Skillnaden mellan deras sätt och ditt är att de använder PHP för att läsa kakan; sedan skriver de 'display: block' eller 'display: none' i <div>en beroende på värdet i den. Om du öppnar <div>en, navigerar till en annan sida och navigerar tillbaka igen skall du se att den är öppen.

Testa!

jag skall testa senare när jag kommer hem.. var lägger jag in din kodsnutt, före eller efter befintligt javascript?

/gert

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Det är upp till dig. :)

gabboMedlem sedan okt. 200534 inlägg
#7

Peter S skrev:

Det är upp till dig. :)

Det fungerade ganska bra, men dessvärre så är det nog något fel på funktionen som skapar kakorna.. så länge jag är kvar på samma sida så är sökvägen i kakan helt ok, men hoppar jag till någon annan sida så skapas en ny kaka med en annan sökväg och då stängs div'en.. hoppar jag runt på några sidor så får jag en ny kaka per sida :-)

/gert

Peter SMedlem sedan dec. 20025 483 inlägg
#8

Vi testar att modifiera funktionen litet:

function writeCookie(name, data, noDays){
  var cookieStr = name + "="+ data
  if (writeCookie.arguments.length > 2){
    cookieStr += "; path=/; expires=" + getCookieExpireDate(noDays)
    }
  document.cookie = cookieStr
}
gabboMedlem sedan okt. 200534 inlägg
#9

Peter S skrev:

Vi testar att modifiera funktionen litet:

function writeCookie(name, data, noDays){
  var cookieStr = name + "="+ data
  if (writeCookie.arguments.length > 2){
    cookieStr += "; path=/; expires=" + getCookieExpireDate(noDays)
    }
  document.cookie = cookieStr
}

Det gjorde ingen skillnad alls... :-(

/gert

Peter SMedlem sedan dec. 20025 483 inlägg
#10

Använd deras getCookieExpireDate()-funktion också. Sedan anropar du writeCookie() enligt writeCookie(namn, värde, antal dagar), där 'antal dagar' anger hur länge kakan skall gälla. Detta, tillsammans med min föreslagna ändring av writeCookie() ovan, tycker jag borde fungera.

gabboMedlem sedan okt. 200534 inlägg
#11

Peter S skrev:

Använd deras getCookieExpireDate()-funktion också. Sedan anropar du writeCookie() enligt writeCookie(namn, värde, antal dagar), där 'antal dagar' anger hur länge kakan skall gälla. Detta, tillsammans med min föreslagna ändring av writeCookie() ovan, tycker jag borde fungera.

Jag upptäcke just att detta fungerar bra i IE men inte i firefox som jag använder.. det är väl bara att ge upp.. tack iaf.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)