it-swarm.dev

Come riposizionare il messaggio di notifica generato dal plugin CookieMonster

Sto usando plug-in 'Cookie Monster' di herdboy che genera un messaggio di notifica di cookie visualizzato come div nella parte superiore/inferiore della pagina o come overlay. Le opzioni di base del plug-in limitano il posizionamento del messaggio di notifica nella parte superiore della pagina o nella parte inferiore (questo è illustrato nel collegamento). Tuttavia, voglio impostare il messaggio affinché appaia all'interno di un div specifico di mia scelta.

Vedo che all'interno del file JS del plug-in, la tua scelta nelle opzioni di base significa che il messaggio verrà posizionato usando $('body').prepend o $('body').append. Ho modificato il file js per sostituire 'body' con '#myDiv'.

Il mio problema è che anche dopo aver modificato il file JS del plugin, il messaggio continua ad apparire come il primo div nel tag body (cioè anteposto al body). Ho controllato tutti gli altri file in plugins/system/cookiemonster posizione e l'unico file che sembra fare riferimento all'iniezione del markup dei messaggi nel sito è il file JS. Non riesco a vedere alcun errore JS di base e sicuramente non è un problema di memorizzazione nella cache.

Che cosa mi manca potenzialmente?

1
Candlejack

Avendo stabilito che la modifica del file JS del plug-in non era realizzabile (anche se non sono ancora sicuro del motivo esatto), ho deciso di sovrascrivere il plug-in JS nel file JS principale del progetto:

$(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 è la classe pertinente dal markup generato dal plug-in Cookie Monster. Nel vero codice di progetto abbiamo alcune altre condizioni che vengono verificate nella funzione CookieMessagePosition, ma queste sono irrilevanti per la domanda e non influiscono sulla risposta.

Il timeout (in questo caso 20 ms) è una precauzione per assicurarsi che il markup pertinente sia stato caricato nel DOM prima che CookieMessagePosition tenti di riposizionare qualsiasi cosa.

1
Candlejack

Quasi difficile ottenere risposte valide su tali domande, senza che qualcuno abbia accesso all'intera pagina e al codice.

Tuttavia, una cosa che devi garantire è che l'elemento #yourDiv Esista e sia univoco in DOM. Se le tue modifiche in plugin js Fossero andate bene, probabilmente non sarebbero state mostrate affatto, se il tuo elemento non fosse presente.

Come soluzione alternativa, anche se non so dove vuoi che appaia il messaggio Cookie, potrei suggerire di creare alcuni css sostituzioni per esso, dandogli una posizione assoluta o fissa, per posizionarlo dove vuoi, e alcuni box-shadow mescolati con altri trucchi css per distinguersi dal resto del contenuto.

0
FFrewin