Cookies in light/dark mode switcher Javascript

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • MarnickS
  • Registratie: Februari 2016
  • Laatst online: 23-09 11:23
De situatie
Ik heb in een site die ik gemaakt heb een light/dark switcher mode gebaseerd op de tijd ingebouwd.
Hij schakelt om 19:30 op de dark mode CSS in en de volgende ochtend gaat hij automatisch weer op lichte modus. Mijn javascript kennis is echt beroerd (ga het nog verbeteren, maar niet op dit moment), en daarom heb ik dus maar een de code van iemand anders in mijn HTML gebouwd (https://github.com/nickdeny/darkmode-js ).
Naast dat hij van thema schakelt gebaseerd op de tijd, zit er ook een handmatige switch voor de thema's ingebouwd.

Mijn vraag
Het bovenstaande werkt prima, totdat ik naar een andere pagina op de website ga. Dan gaat hij terug naar de standaard modus die er voor dat tijdstip ingesteld is. Dat is vrij logisch natuurlijk, want ik heb geen cookies ingesteld die er voor zorgen dat die instellingen bewaard blijven.

Ik heb al meerdere sites afgezocht en verschillende dingen geprobeerd maar niks lijkt te werken, en ik heb eigenlijk ook geen idee wat ik aan het doen ben (dat is waarschijnlijk ook de reden dat niks werkt).

Het zal vast heel simpel op te lossen zijn, maar ik zou niet weten hoe. Ik weet ook niet of ik het in de Javascript code binnen mn html moet zetten of dat het in het losse Javascript bestand wat ik heb moet.
Heeft iemand toevallig een oplossing?

Hier de code van mn theme-switcher:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    <span class="themeswitcher">
            Thema:
            <button class="themebutton tooltip-right" data-tooltip="Donkere modus word 's avonds automatisch geactiveerd" id="toggle" class="btn btn--brand">
                <span id="mode"></span>
            </button>
     </span>

    <script src="https://static.fproosters.nl/js/darkmode.min.js"></script>
    <script>
      var options = {
        light: 'https://static.fproosters.nl/css/r_light.css',
        dark: 'https://static.fproosters.nl/css/r_dark.css',
        startAt: '19:30',
        endAt: '06:00'
      };

      var DarkMode = new DarkMode(options);
      document.getElementById('mode').innerHTML = DarkMode.getMode();
          document.getElementById('toggle').onclick = function() {
        DarkMode.toggleTheme();
        document.getElementById('mode').innerHTML = DarkMode.getMode();
      }
    </script>


Relevante software en hardware die ik gebruik
https://github.com/nickdeny/darkmode-js

Wat ik al gevonden of geprobeerd heb
Verschillende (simpele) dingen op internet, maar eigenlijk niks werkt en ik snap ook niet zo goed wat ik aan het doen ben.

Alle reacties


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 09:58

MueR

Admin Tweakers Discord

is niet lief

Als je dit puur met JS wil doen, zou je natuurlijk ondomready een check kunnen doen op de tijd en dan een andere class op je body oid zetten voor de dark mode. Indien je met een serverside language werkt zou het ook automagisch kunnen door daar een check te doen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
Probeer het volgende eens uit te werken bij de onClick:
- Toggle de DarkMode plugin.
- Lees de huidige modus uit van de DarkMode plugin.
- Schrijf dit weg in een cookie.

En daarnaast bij het navigeren naar een nieuwe pagina:
- Lees het cookie uit.
- Lees de huidige modus uit van de DarkMode plugin.
- Toggle de DarkMode plugin, indien de huidige modus niet overeenkomt met wat in het cookie staat.

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles