web-dev-qa-db-fra.com

Basculer l'affichage de la barre latérale

Je développe un thème WordPress qui permet aux utilisateurs d'activer/désactiver la visibilité des barres latérales à l'aide de JavaScript de la même manière que les wikis permettent aux utilisateurs d'afficher ou de masquer une table des matières.

Quand un utilisateur clique sur le lien pour masquer une barre latérale, j’ai une fonction toggle () toggle () qui définit la visibilité de la barre latérale sur "none" et définit également un cookie de document afin que la prochaine fois que les utilisateurs visiteront cette page, la barre latérale rappelez-vous le dernier état à bascule.

J'ai une autre fonction javascript, setToggleFromCookie (), qui récupère le cookie et définit la visibilité en fonction de ce cookie. Tout cela fonctionne sauf:

Si une barre latérale est masquée (c.-à-d. La visibilité de la barre latérale div = "none" et que le cookie du document cache une barre = 1), lorsque la page est chargée, la barre latérale apparaît brièvement avant que le javascript ne remplace pas la visibilité = "block" avec "visibilité" . "

J'ai mis setToggleFromCookie () dans jQuery (document) .ready (function (), mais la page semble toujours se charger et afficher la barre latérale AVANT setToggleFromCookie () saute pour la masquer ...

1
marpa

Bien que gênant, votre plugin fonctionne correctement. La page se restitue complètement d’abord en affichant la barre latérale, puis le code JavaScript s’active pour masquer la barre latérale.

La solution à cela est que votre code PHP vérifie/récupère le cookie de l'utilisateur et définit le statut de la barre latérale de l'écran en conséquence. Ainsi, lorsque la page sera rendue, sa valeur sera initialement définie sur none, et toute bascule d'image future pourra alors masquer/afficher la barre latérale de manière dynamique.

Lorsque la page est chargée à nouveau pour une raison quelconque, le même code de chargement PHP s'exécutera à nouveau et définira l'état initial de la barre latérale en conséquence, sans qu'il soit nécessaire de "faire un suivi" après le chargement de la page initiale pour afficher/cache la barre latérale.

Espérons que cela a du sens. Si vous avez besoin de précisions, essayez de mettre à jour votre question avec le code impliqué.

4
Dillie-O