Ik ben al enkele dagen op zoek naar een oplossing voor dit probleem, maar spijtiggenoeg is mijn JavaScript en DOM-kennis heel beperkt.
Momenteel heb ik op mijn site een scriptje dat mijn CSS-stylesheet kan aanpassen door een stylesheet te selecteren in een select-element ("styleselect") in een form ("styleform"). Dat gedeelte gaat allemaal goed, dit wordt allemaal in een cookie weggeschreven zodat die instelling bewaard blijft. Het probleem is nu dat bij het forced refreshen of het veranderen van pagina de optie in die select box ook weer verandert naar de standaardwaarde zodat de stylesheet anders is dan de titel in de select box aangeeft. Concreet heb ik dus een stukje script nodig dat aan die select box wijsmaakt dat optie X geselecteerd is.
Hieronder staat de relevante code van die site, mocht je hieraan niet genoeg hebben, staat de volledige site op http://student.vub.ac.be/~egeerard/
De extra code moet dus ook bij window.onload komen (of als function) en die select in de XHTML aanspreken zodat de browser in dat venstertje de juiste naam weergeeft bij de stylesheet. Ik hoop dat iemand me hierbij kan helpen (als wat ik wil mogelijk is, in ieder geval).
Momenteel heb ik op mijn site een scriptje dat mijn CSS-stylesheet kan aanpassen door een stylesheet te selecteren in een select-element ("styleselect") in een form ("styleform"). Dat gedeelte gaat allemaal goed, dit wordt allemaal in een cookie weggeschreven zodat die instelling bewaard blijft. Het probleem is nu dat bij het forced refreshen of het veranderen van pagina de optie in die select box ook weer verandert naar de standaardwaarde zodat de stylesheet anders is dan de titel in de select box aangeeft. Concreet heb ik dus een stukje script nodig dat aan die select box wijsmaakt dat optie X geselecteerd is.
Hieronder staat de relevante code van die site, mocht je hieraan niet genoeg hebben, staat de volledige site op http://student.vub.ac.be/~egeerard/
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <link rel="stylesheet" type="text/css" href="css/dark1.css" media="screen, tv, projection" title="Dark"/> <link rel="alternate stylesheet" type="text/css" href="css/compactdark1.css" media="screen, tv, projection" title="Dark Compact"/> <link rel="alternate stylesheet" type="text/css" href="css/dark2.css" media="screen, tv, projection" title="Dark Alternate"/> <link rel="alternate stylesheet" type="text/css" href="css/light1.css" media="screen, tv, projection" title="Light" /> <link rel="alternate stylesheet" type="text/css" href="css/oldterminal.css" media="screen, tv, projection, tty" title="Old Terminal" /> <link rel="alternate stylesheet" type="text/css" href="css/badboy.css" media="screen, tv, projection" title="Bad Design" /> <link rel="stylesheet" type="text/css" href="css/print.css" media="print" title="Printer"/> <!-- ... --> <div id="stylebox"> <form id="styleform" style="text-align:left;"> Select CSS style: <select name="styleselect" size="1" id="styleselect" onChange="setActiveStyleSheet(this.options[this.selectedIndex].value)"> <option value="Dark">Dark (default)</option> <option value="Dark Alternate">Dark 2</option> <option value="Light">Light</option> <option value="Dark Compact">Dark Compact</option> <option value="Old Terminal">Old Terminal</option> <option value="Bad Design">Bad Design</option> </select> </form> </div> |
JavaScript:
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
| function setActiveStyleSheet(title) { var i, a, main; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } } function getPreferredStyleSheet() { var i, a; if ((screen.width<=800) && (screen.height<=600)) { return "Dark Compact"; } else { for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title") ) return a.getAttribute("title"); } } return null; } window.onload = function(e) { var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); } |
De extra code moet dus ook bij window.onload komen (of als function) en die select in de XHTML aanspreken zodat de browser in dat venstertje de juiste naam weergeeft bij de stylesheet. Ik hoop dat iemand me hierbij kan helpen (als wat ik wil mogelijk is, in ieder geval).