gabboMedlem sedan okt. 200534 inlägg 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 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
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 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
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
gabboMedlem sedan okt. 200534 inlägg
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 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
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 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
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.