Als navigatie van een websie heb ik een uitklapmenu (code van http://www.dynamicdrive.com/) En dat werkt prima, totdat alle dynamische pagina's (page.php?id=1 of 2 enz.) naar losse html bestanden geschreven werden (pagina1.html pagina 2.html)
Het probleem is dat hij de huidige stand van het menu opslaat in een cookie, maar omdat alle pagina's nu een andere naam hebben maakt hij er andere cookies voor (dus per pagina onthoud hij een eigen stand)
Nu heb ik zitten graven in de code maar kom ik niet heel erg ver zonder javascript ervaring
// edit.
Na wat zoeken ben ik al iets verder, hij gebruikt het pad en de bestandsnaam / waarde ("/pagina.html") voor de cookie van de betreffende pagina.
nu zie ik overal window.location.pathname staan, maar daar moet natuurlijk gewoon ipv. pathname een vaste naam komen.
Het zou toch niet al te moeilijk moeten zijn om er voor te zorgen dat hij de stand van het menu opslaat in een cookie in plaats van telkens een andere te maken (dat werkt voor geen meter)
Het probleem is dat hij de huidige stand van het menu opslaat in een cookie, maar omdat alle pagina's nu een andere naam hebben maakt hij er andere cookies voor (dus per pagina onthoud hij een eigen stand)
Nu heb ik zitten graven in de code maar kom ik niet heel erg ver zonder javascript ervaring
// edit.
Na wat zoeken ben ik al iets verder, hij gebruikt het pad en de bestandsnaam / waarde ("/pagina.html") voor de cookie van de betreffende pagina.
nu zie ik overal window.location.pathname staan, maar daar moet natuurlijk gewoon ipv. pathname een vaste naam komen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
| var enablepersist="on" //Enable saving state of content structure using session cookies? (on/off)
var collapseprevious="yes" //Collapse previously open content when opening present? (yes/no)
if (document.getElementById){
document.write('<style type="text/css">')
document.write('.switchcontent{display:none;}')
document.write('</style>')
}
function getElementbyClass(classname){
ccollect=new Array()
var inc=0
var alltags=document.all? document.all : document.getElementsByTagName("*")
for (i=0; i<alltags.length; i++){
if (alltags[i].className==classname)
ccollect[inc++]=alltags[i]
}
}
function contractcontent(omit){
var inc=0
while (ccollect[inc]){
if (ccollect[inc].id!=omit)
ccollect[inc].style.display="none"
inc++
}
}
function expandcontent(cid){
if (typeof ccollect!="undefined"){
if (collapseprevious=="yes")
contractcontent(cid)
document.getElementById(cid).style.display=(document.getElementById(cid).style.display!="block")? "block" : "none"
}
}
function revivecontent(){
contractcontent("omitnothing")
selectedItem=getselectedItem()
selectedComponents=selectedItem.split("|")
for (i=0; i<selectedComponents.length-1; i++)
document.getElementById(selectedComponents[i]).style.display="block"
}
// hier moet het probleem ergens liggen
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
function getselectedItem(){
if (get_cookie(window.location.pathname) != ""){
selectedItem=get_cookie(window.location.pathname)
return selectedItem
}
else
return ""
}
function saveswitchstate(){
var inc=0, selectedItem=""
while (ccollect[inc]){
if (ccollect[inc].style.display=="block")
selectedItem+=ccollect[inc].id+"|"
inc++
}
document.cookie=window.location.pathname+"="+selectedItem
}
function do_onload(){
getElementbyClass("switchcontent")
if (enablepersist=="on" && typeof ccollect!="undefined")
revivecontent()
}
if (window.addEventListener)
window.addEventListener("load", do_onload, false)
else if (window.attachEvent)
window.attachEvent("onload", do_onload)
else if (document.getElementById)
window.onload=do_onload
if (enablepersist=="on" && document.getElementById)
window.onunload=saveswitchstate |
Het zou toch niet al te moeilijk moeten zijn om er voor te zorgen dat hij de stand van het menu opslaat in een cookie in plaats van telkens een andere te maken (dat werkt voor geen meter)
[ Voor 18% gewijzigd door Collaborator op 23-01-2006 11:21 ]
This space is occupied