Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

2 participants

Voir le sujet précédent Voir le sujet suivant Aller en bas

Résolu Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Lun 8 Juil 2013 - 5:49

Bonjour.

Il y a peut j'ai installer sur mon forum un code javascript qui permet à chacun de mettre sont propre background.
Ce code est le suivant:

Code:
function insert_own_bg(){var a=prompt("Enter image URL ! (eg: http://example.com/image.jpg)","").replace("http:","");""===a||null===a||void 0===a?jQuery.noop():"undefined"!==typeof Storage?(localStorage.removeItem("own_bg_local"),localStorage.setItem("own_bg_local",a),my_setcookie("bg","x",31536E3,0),$(":root,body").css("background",'url("'+localStorage.getItem("own_bg_local")+'") repeat fixed 50% 0 #000')):(my_setcookie("own_bg_url",a,31536E3,0),my_setcookie("bg","x",31536E3,0),$(":root,body").css("background", 'url("'+my_getcookie("own_bg_url")+'") repeat fixed 50% 0 #000'))}

Le code fonctionne très bien, seulement au chargement ou changement de page il ne le garde pas en mémoire.

Egalement ce code html placé dans le message sur la page d'accueil:

Code:
<a id="backg" name="bg" onclick="insert_own_bg()">
      Choisir votre background
    </a>

Et enfin le suivant placé dans le CSS:

Code:
#backg{
  position: fixed;
  bottom:2%;
  left:1%;}

Quelqu'un aurait-il une idée de comment résoudre ce problème ?


Dernière édition par SeLfde4Th7 le Ven 2 Aoû 2013 - 14:50, édité 1 fois
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Mar 9 Juil 2013 - 18:23

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Mer 10 Juil 2013 - 19:11

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Jeu 11 Juil 2013 - 17:54

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Ven 12 Juil 2013 - 19:53

UP.
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Sam 13 Juil 2013 - 20:22

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Dim 14 Juil 2013 - 20:55

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Lun 15 Juil 2013 - 23:39

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Mer 17 Juil 2013 - 16:00

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Jeu 18 Juil 2013 - 17:18

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Sam 20 Juil 2013 - 18:14

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par benneke Sam 20 Juil 2013 - 19:12

Bonjour,

dans le code que vous mettez il demande l'URL du background, il la mets dans un cookie et la change sur la page. OK
Au chargement de la page, comment il sait qu'il y a un cookie avec une URL de background ? Si la fonction ne s’exécute que après clic sur le lien, c'est normal. Avez-vous essayé de mettre ceci :
Code:
$(document).ready(function()
    {
   $(function ()
      {
      $('body').css("background", 'url("'+my_getcookie("own_bg_url")+'") repeat fixed 50% 0 #000');
 
      });

    });

Je n'ai pas trouvé le bouton pour changer le BG sur votre page par contre, ce n'est accessible que par les membres ?

Bonne soirée,
avatar

benneke
***

Messages : 150
Inscrit(e) le : 07/04/2012

benneke a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Sam 20 Juil 2013 - 22:23

benneke a écrit:Bonjour,

dans le code que vous mettez il demande l'URL du background, il la mets dans un cookie et la change sur la page.  OK
Au chargement de la page, comment il sait qu'il y a un cookie avec une URL de background ? Si la fonction ne s’exécute que après clic sur le lien, c'est normal.  Avez-vous essayé de mettre ceci :
Code:
$(document).ready(function()
    {
 $(function ()
 {
 $('body').css("background", 'url("'+my_getcookie("own_bg_url")+'") repeat fixed 50% 0 #000');

});

    });


Je n'ai pas trouvé le bouton pour changer le BG sur votre page par contre, ce n'est accessible que par les membres ?

Bonne soirée,

Bonsoir et merci de ta réponse Smile.

J'ai enlever le bouton en attendant une correction du bug , je vais tenter de nouveau.

EDIT: le code que vous me donner y est déjà à la fin du JS !!

EDIT2: j'ai tout de m^me essayez mais le problème est toujours le même!
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par benneke Sam 20 Juil 2013 - 23:44

J'ai peut-être une autre piste. Quand je vérifie mes cookies de ton forum, je n'ai nulle part l'image que j'ai mis dans l'alert.

J'ai juste un cookie au nom de bg avec comme valeur x.

Pouvez-vous essayer avec ceci :
Code:
function insert_own_bg(){
var a=prompt("Enter image URL ! (eg: http://example.com/image.jpg)","").replace("http:","");""===a||null===a||void 0===a?jQuery.noop():"undefined"!==typeof Storage?(localStorage.removeItem("own_bg_local"),localStorage.setItem("own_bg_local",a),my_setcookie("bg","localStorage.getItem("own_bg_local")",31536E3,0),$(":root,body").css("background",'url("'+localStorage.getItem("own_bg_local")+'") repeat fixed 50% 0 #000')):(my_setcookie("own_bg_url",a,31536E3,0),my_setcookie("bg","localStorage.getItem("own_bg_local")",31536E3,0),$(":root,body").css("background", 'url("'+my_getcookie("own_bg_url")+'") repeat fixed 50% 0 #000'))
}

Code:
        $(document).ready(function()
            {
          $(function ()
              {
              $('body').css("background", 'url("'+my_getcookie("bg")+'") repeat fixed 50% 0 #000');
       
              });
       
            });
avatar

benneke
***

Messages : 150
Inscrit(e) le : 07/04/2012

benneke a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Dim 21 Juil 2013 - 14:12

Bonjour.

Cela ne fonctionne toujours pas :/ .
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par benneke Mar 23 Juil 2013 - 0:03

Bonjour,

je vois effectivement que j'ai oublié de modifier certains autres noms de cookie, peut-être du à cela.
Code:
        function insert_own_bg(){
        var a=prompt("Enter image URL ! (eg: http://example.com/image.jpg)","").replace("http:","");""===a||null===a||void 0===a?jQuery.noop():"undefined"!==typeof Storage?(localStorage.removeItem("own_bg_local"),localStorage.setItem("own_bg_local",a),my_setcookie("bg","localStorage.getItem("own_bg_local")",31536E3,0),$(":root,body").css("background",'url("'+localStorage.getItem("own_bg_local")+'") repeat fixed 50% 0 #000')):(my_setcookie("own_bg_url",a,31536E3,0),my_setcookie("bg","localStorage.getItem("own_bg_local")",31536E3,0),$(":root,body").css("background", 'url("'+my_getcookie("bg")+'") repeat fixed 50% 0 #000'))
        }

Par contre, vous avez complètement changé le forum ? Celui lié à votre compte n'est plus le même (je voulais voir le résultat du cookie avec le code modifié...)

Bonne soirée/nuit,
avatar

benneke
***

Messages : 150
Inscrit(e) le : 07/04/2012

benneke a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Mar 23 Juil 2013 - 0:19

Non voici l'adresse du forum:

http://www.frenchgamercommunity.com/forum

Vous pouvez voir que maintenant même le bouton ne fait plus rien :/ .

Merci de votre aide =) .
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par benneke Mar 23 Juil 2013 - 0:37

Effectivement, je vois qu'il y a une erreur dans le JS. Je n'ai plus le temps de regarder maintenant, je vais regarder cela plus en profondeur demain soir, je dois avouer que je suis clacqué la. Peut-être partir sur une toute autre base (la fonction my_getcookie et my_setcookie ne fonctionnent pas en local chez moi, une extension ou d'autres fonctions déclarées quelque part?)

Bonne nuit !
avatar

benneke
***

Messages : 150
Inscrit(e) le : 07/04/2012

benneke a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Mer 24 Juil 2013 - 16:32

Bonjour.

Il est sympathique à vous de vous penchez sur mon problème, prenez votre temps et reposez vous =) .
J'ai un problème d'alimentation et ne fait donc qu'un court passage pour vous dire que je serais de retour lundi ou mardi prochain.

Bonne journée, merci Smile .
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par benneke Jeu 25 Juil 2013 - 0:10

Bonsoir,

j'ai finalement réécris le code JS pour le background, celui-ci devrait fonctionner.

Code:
function insert_own_bg()
            {
               var a=prompt("Enter image URL ! (eg: http://example.com/image.jpg)","")
               if (a != null)
               {
                  a.replace("http:","");
                  $.cookie('background',a, { expire : 7 });
                  $(":root,body").css("background",'url("'+$.cookie("background")+'") repeat fixed 50% 0 #000');
               }
            }
$(document).ready(function()
            {
          $(function ()
              {
            if ($.cookie("background")!=null)
            {
              $('body').css("background", 'url("'+$.cookie("background")+'") repeat fixed 50% 0 #000');
              }
              });
       
            });

le bouton reste le même dans le HTML :
Code:
<a id="backg" name="bg" onclick="insert_own_bg()">
              Choisir votre background
            </a>

Si tout ceci ne fonctionne pas, c'est que l'extension $.cookie n'est pas installée dans les forumactifs, alors il faut ajouter ce code avant le précédent :
Code:
    /*!
* jQuery Cookie Plugin v1.3.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2013 Klaus Hartl
* Released under the MIT license
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as anonymous module.
define(['jquery'], factory);
} else {
// Browser globals.
factory(jQuery);
}
}(function ($) {

var pluses = /\+/g;

function raw(s) {
return s;
}

function decoded(s) {
return decodeURIComponent(s.replace(pluses, ' '));
}

function converted(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
}
try {
return config.json ? JSON.parse(s) : s;
} catch(er) {}
}

var config = $.cookie = function (key, value, options) {

// write
if (value !== undefined) {
options = $.extend({}, config.defaults, options);

if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setDate(t.getDate() + days);
}

value = config.json ? JSON.stringify(value) : String(value);

return (document.cookie = [
config.raw ? key : encodeURIComponent(key),
'=',
config.raw ? value : encodeURIComponent(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}

// read
var decode = config.raw ? raw : decoded;
var cookies = document.cookie.split('; ');
var result = key ? undefined : {};
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split('=');
var name = decode(parts.shift());
var cookie = decode(parts.join('='));

if (key && key === name) {
result = converted(cookie);
break;
}

if (!key) {
result[name] = converted(cookie);
}
}

return result;
};

config.defaults = {};

$.removeCookie = function (key, options) {
if ($.cookie(key) !== undefined) {
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return true;
}
return false;
};

}));

Je viens de le tester en local et cela fonctionnait pas mal du tout... Sauf bien entendu si on mets autre chose qu'une URL d'image, alors le fond est simplement noir ici. Testé sous Firefox, Opera et Safari

Dis moi quoi Wink

++
avatar

benneke
***

Messages : 150
Inscrit(e) le : 07/04/2012

benneke a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Sam 27 Juil 2013 - 18:33

Bonjour.

Ce code ne fonctionne toujours pas :/ .
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Dim 28 Juil 2013 - 20:27

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Mar 30 Juil 2013 - 16:41

UP
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par benneke Ven 2 Aoû 2013 - 14:39

Bonjour,

Je viens d'essayer le code sur mon forum qui est également en phpbb3 et il fonctionne. J'ai seulement fait mettre le lien en javascript aussi.

voici le code que j'ai inclus sur toutes les pages :
Code:
/*!
        * jQuery Cookie Plugin v1.3.1
        * https://github.com/carhartl/jquery-cookie
        *
        * Copyright 2013 Klaus Hartl
        * Released under the MIT license
        */
        (function (factory) {
        if (typeof define === 'function' && define.amd) {
        // AMD. Register as anonymous module.
        define(['jquery'], factory);
        } else {
        // Browser globals.
        factory(jQuery);
        }
        }(function ($) {
       
        var pluses = /\+/g;
       
        function raw(s) {
        return s;
        }
       
        function decoded(s) {
        return decodeURIComponent(s.replace(pluses, ' '));
        }
       
        function converted(s) {
        if (s.indexOf('"') === 0) {
        // This is a quoted cookie as according to RFC2068, unescape
        s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
        }
        try {
        return config.json ? JSON.parse(s) : s;
        } catch(er) {}
        }
       
        var config = $.cookie = function (key, value, options) {
       
        // write
        if (value !== undefined) {
        options = $.extend({}, config.defaults, options);
       
        if (typeof options.expires === 'number') {
        var days = options.expires, t = options.expires = new Date();
        t.setDate(t.getDate() + days);
        }
       
        value = config.json ? JSON.stringify(value) : String(value);
       
        return (document.cookie = [
        config.raw ? key : encodeURIComponent(key),
        '=',
        config.raw ? value : encodeURIComponent(value),
        options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
        options.path ? '; path=' + options.path : '',
        options.domain ? '; domain=' + options.domain : '',
        options.secure ? '; secure' : ''
        ].join(''));
        }
       
        // read
        var decode = config.raw ? raw : decoded;
        var cookies = document.cookie.split('; ');
        var result = key ? undefined : {};
        for (var i = 0, l = cookies.length; i < l; i++) {
        var parts = cookies[i].split('=');
        var name = decode(parts.shift());
        var cookie = decode(parts.join('='));
       
        if (key && key === name) {
        result = converted(cookie);
        break;
        }
       
        if (!key) {
        result[name] = converted(cookie);
        }
        }
       
        return result;
        };
       
        config.defaults = {};
       
        $.removeCookie = function (key, options) {
        if ($.cookie(key) !== undefined) {
        // Must not alter options, thus extending a fresh object...
        $.cookie(key, '', $.extend({}, options, { expires: -1 }));
        return true;
        }
        return false;
        };
       
        }));


        function insert_own_bg()
                    {
                      var a=prompt("Enter image URL ! (eg: http://example.com/image.jpg)","");
                      if (a != null)
                      {
                          a.replace("http:","");
                          $.cookie('background',a, { expire : 7 });
                          $(":root,body").css("background",'url("'+$.cookie("background")+'") repeat fixed 50% 0 #000');
                      }
                    }
        $(document).ready(function()
                    {
                  $(function ()
                      {
var bouton_background = $('<a id="backg" name="bg" onclick="insert_own_bg()">Choisir votre background</a>');

$('#phpbb').append(bouton_background);

                    if ($.cookie("background")!=null)
                    {
                      $('body').css("background", 'url("'+$.cookie("background")+'") repeat fixed 50% 0 #000');
                      }
                      });
             
                    });

et je dois dire que cela fonctionne assez bien (regarde sur mon profil pour le lien de mon forum, il est actif actuellement)

A bientôt,
avatar

benneke
***

Messages : 150
Inscrit(e) le : 07/04/2012

benneke a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Le Background personnalisé ne reste pas en mémoire après un rechargement de la page.

Message par Self Ven 2 Aoû 2013 - 14:49

Bonjour benneke Smile .

Cela fonctionne également chez moi.
Je vous dit un grand merci pour vous être penché sur le problème.

Bonne journée =).
Self

Self
Membre actif

Masculin
Messages : 3853
Inscrit(e) le : 13/06/2013

https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum