it-swarm-vi.com

Cách định vị lại tin nhắn thông báo được tạo bởi plugin CookieMonster

Tôi đang sử dụng plugin 'Cookie Monster' của herdboy để tạo thông báo thông báo cookie được hiển thị dưới dạng div ở đầu/cuối trang của bạn hoặc dưới dạng lớp phủ. Các tùy chọn plugin cơ bản giới hạn định vị thông báo thông báo ở đầu trang hoặc ở cuối trang (điều này được minh họa trong liên kết). Tuy nhiên, tôi muốn đặt thông báo xuất hiện bên trong một div cụ thể mà tôi chọn.

Tôi có thể thấy rằng bên trong tệp JS của plugin, lựa chọn của bạn trong các tùy chọn cơ bản có nghĩa là thông báo sẽ được định vị bằng cách sử dụng $('body').prepend hoặc $('body').append. Tôi đã chỉnh sửa tệp js để thay thế 'body' với '#myDiv'.

Vấn đề của tôi là ngay cả sau khi đã thay đổi tệp JS của plugin, thông báo vẫn tiếp tục xuất hiện dưới dạng div đầu tiên trong thẻ body (nghĩa là được thêm vào phần thân). Tôi đã kiểm tra tất cả các tệp khác trong plugins/system/cookiemonster location và tệp duy nhất có vẻ tham chiếu khi đánh dấu thông báo vào trang web là tệp JS. Tôi không thể thấy bất kỳ lỗi JS cơ bản nào và đó chắc chắn không phải là vấn đề về bộ đệm.

Tôi có khả năng thiếu gì?

1
Candlejack

Sau khi xác minh rằng việc chỉnh sửa tệp JS của plugin là không thể thực hiện được (mặc dù tôi vẫn không chắc chắn về lý do chính xác), tôi đã quyết định ghi đè lên plugin JS trong tệp JS chính của dự án:

$(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 là lớp có liên quan từ đánh dấu được tạo bởi plugin Cookie Monster. Trong mã dự án thực tế, chúng tôi có một số điều kiện khác đang được kiểm tra trong chức năng Định vị CookieMessageP nhưng những điều này không liên quan đến câu hỏi và không ảnh hưởng đến câu trả lời.

Thời gian chờ (20ms trong trường hợp này) là một biện pháp phòng ngừa để đảm bảo đánh dấu có liên quan đã được tải trong DOM trước khi CookieMessagePocationing cố gắng định vị lại bất cứ điều gì.

1
Candlejack

Hầu như rất khó để có được câu trả lời hợp lệ cho một câu hỏi như vậy, mà không có ai có quyền truy cập vào toàn bộ trang và mã.

Tuy nhiên, một điều bạn phải đảm bảo là #yourDiv phần tử tồn tại và là duy nhất trong DOM. Nếu thay đổi của bạn trong plugin js sẽ ổn thôi, có lẽ nó sẽ không hiển thị chút nào, nếu yếu tố của bạn không có ở đó.

Như một giải pháp thay thế, mặc dù tôi không biết bạn muốn thông báo Cookies xuất hiện ở đâu, tôi có thể đề xuất tạo một số css ghi đè lên nó, đặt vị trí tuyệt đối hoặc cố định, để đặt nó ở bất cứ đâu bạn muốn và một số box-shadow trộn lẫn với các thủ thuật css khác để làm cho nó nổi bật so với phần còn lại của nội dung.

0
FFrewin