Dernier article : Utilisation de js pour lire, écrire et supprimer le partage de code de cookie et les commentaires détaillés , certains problèmes ont été découverts en pratique :
1. Les cookies sur les fichiers locaux ne peuvent être débogués que sur Firefox et ne sont pas valides pour IE et Chrome
2. Le cookie n'est pas configuré pour ne jamais expirer. Il est uniquement envisagé de définir un délai avant son expiration, ce qui est évidemment déraisonnable.
Cette fois, nous donnons un code d'opération de cookie plus raisonnable :
var Cookie = {
Obtenir : fonction (k) {
return ((new RegExp(["(?:; )?", k, "=([^;]*);?"].join(""))).test(document.cookie) && RegExp[" $1"]) || "";
},
ensemble : fonction (k, v, e, d) {
var date=nouvelle Date();
var expiresDays=e
date.setTime(date.getTime() expiresDays*24*3600*1000);
//S'il y a une durée définie, le cookie sera utilisé dans le délai spécifié, sinon il n'expirera jamais
document.cookie=k "=" v "; expires=" (e != '' ? date.toGMTString(): "GMT_String") ";path=/;domain=" (d||'');
},
del : fonction (k) {
var date=nouvelle Date();
//Régler la date sur l'heure passée
date.setTime(date.getTime()-10000
);
document.cookie=k "=; expires=" date.toGMTString();
>
};
L'exemple le démontre : cliquez sur le texte pour développer le contenu, et cliquez à nouveau pour le masquer. Lorsque le contenu est masqué, il le sera toujours lors de sa prochaine ouverture. Lorsque le contenu est affiché, il sera toujours affiché lors de sa prochaine ouverture.
Après l'expansion, vous pouvez voir le contenu ici
var btn = document.getElementsByTagName('h3')[0];
btn.addEventListener('click',function(){
var isClose = this.getAttribute('data-isClose');
if(isClose == 'fermer'){
show();
Cookie.del('drapeau');
}autre{
cacher();
Cookie.set('flag','hide');
>
});
var tabCon = document.getElementById('tabCon');
fonction show(){
tabCon.style.display = 'bloc';
btn.setAttribute('data-isClose','open');
btn.innerHTML = 'Rétrécir';
>
fonction cacher(){
tabCon.style.display = 'aucun';
btn.setAttribute('data-isClose','close');
btn.innerHTML = 'Développer';
>
var drapeau = Cookie.get('flag');
if(drapeau == 'masquer'){
cacher();
>