web-dev-qa-db-fra.com

Comment repositionner le message de notification généré par le plugin CookieMonster

J'utilise le plugin 'Cookie Monster' de herdboy qui génère un message de notification de cookie affiché sous la forme d'un div en haut/en bas de votre page ou en superposition. Les options de base du plug-in limitent le positionnement du message de notification au haut ou au bas de votre page (ceci est illustré dans le lien). Cependant, je souhaite que le message apparaisse dans une division spécifique de mon choix.

Je peux voir que dans le fichier JS du plug-in, votre choix parmi les options de base signifie que le message sera soit positionné à l'aide de $('body').prepend ou $('body').append. J'ai édité le fichier js pour remplacer 'body' avec '#myDiv'.

Mon problème est que, même après avoir modifié le fichier JS du plug-in, le message continue d'apparaître en tant que première div de la balise body (c'est-à-dire, ajouté au corps). J'ai vérifié tous les autres fichiers du plugins/system/cookiemonster emplacement, et le seul fichier qui semble faire référence à l’injection du balisage du message dans le site est le fichier JS. Je ne vois aucune erreur JS de base, et ce n'est certainement pas un problème de mise en cache.

Qu'est-ce qui me manque potentiellement?

1
Candlejack

Après avoir établi que la modification du fichier JS du plug-in était impossible (bien que je ne sois pas encore sûr de la raison exacte), j'ai décidé de remplacer le plug-in JS dans le fichier JS principal du projet:

$(window).load(function(){
    // some other
    // project
    // functions here
    cookieMessagePositioning();
});

function cookieMessagePositioning(){
    var cookieTimer = setTimeout(function() {
        $('header.cc-cookies').prependTo('#myDiv');
    }, 20);
}

NB.header.cc-cookies est la classe pertinente du balisage généré par le plugin Cookie Monster. Dans le code du projet réel, d'autres fonctions sont vérifiées dans la fonction CookieMessagePositioning, mais elles ne sont pas pertinentes pour la question et n'affectent pas la réponse.

Le délai d'attente (20 ms dans ce cas) est une précaution pour vous assurer que le balisage pertinent a été chargé dans le DOM avant que CookieMessagePositioning ne tente de repositionner quoi que ce soit.

1
Candlejack

Il est presque difficile d’obtenir des réponses valables à de telles questions sans que personne n’ait accès à la page complète et au code.

Cependant, vous devez vous assurer que le #yourDiv L'élément existe et est unique dans le DOM. Si vos changements dans le plugin js aurait été correct, cela ne se verrait probablement pas du tout si votre élément n'y était pas.

Comme solution alternative, bien que je ne sache pas où vous voulez que le message Cookies apparaisse, je pourrais suggérer de créer quelques css remplacements pour lui, en lui donnant une position absolue ou fixe, de le placer où vous le souhaitez, et certains box-shadow _ mélangé avec d'autres astuces css pour le faire ressortir du reste du contenu.

0
FFrewin