web-dev-qa-db-ja.com

CookieMonsterプラグインによって生成された通知メッセージを再配置する方法

私は plugin 'Cookie Monster' by herdboy を使用しています。これは、ページの上部/下部のdivまたはオーバーレイとして表示されるcookie通知メッセージを生成します。基本的なプラグインオプションは、通知メッセージの配置をページの上部または下部に制限します(これはリンクに示されています)。ただし、選択した特定のdiv内にメッセージが表示されるように設定したいと思います。

プラグインのJSファイル内で、基本オプションを選択すると、メッセージが$('body').prependまたは$('body').appendを使用して配置されることがわかります。 jsファイルを編集して、'body''#myDiv'に置き換えました。

私の問題は、プラグインのJSファイルを変更した後でも、メッセージがボディタグの最初のdivとして表示され続ける(つまり、ボディの前に付加される)ことです。私はplugins/system/cookiemonsterの場所にある他のすべてのファイルを確認しました。サイトにメッセージマークアップを挿入することを参照していると思われる唯一のファイルはJSファイルです。基本的なJSエラーは表示されません。キャッシュの問題ではありません。

私が見落としている可能性があるのは何ですか?

1
Candlejack

プラグイン自身のJSファイルの編集が機能しないことを確認したので(正確な理由はまだわかりません)、プロジェクトのメインJSファイルでプラグインJSをオーバーライドすることにしました。

$(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は、Cookie Monsterプラグインによって生成されたマークアップからの関連クラスです。実際のプロジェクトコードでは、CookieMessagePositioning関数でチェックされる他のいくつかの条件がありますが、これらは質問とは無関係であり、回答には影響しません。

タイムアウト(この場合は20ミリ秒)は、CookieMessagePositioningが何かを再配置する前に、関連するマークアップがDOMにロードされたことを確認するための予防策です。

1
Candlejack

誰かがページ全体とコードにアクセスできなければ、そのような質問に対して有効な答えを得るのはほとんど困難です。

ただし、確認する必要があるのは、#yourDiv要素が存在し、DOMで一意です。 plugin jsは大丈夫だったでしょう。もし要素がそこになければ、おそらくまったく表示されません。

別の回避策として、Cookieメッセージをどこに表示するかはわかりませんが、cssオーバーライドを作成して、絶対位置または固定位置を指定し、任意の場所に配置することをお勧めします。いくつか box-shadow他のcssトリックと組み合わせて、他のコンテンツから際立たせます。

0
FFrewin