Tự tạo mã quảng cáo Popup/Popunder, có hỗ trợ Cookies

Bài viết này sẽ hướng dẫn các bạn cách tạo mã quảng cáo Popup/Popunder bằng JavaScript cực kì đơn giản mà hiệu quả, có sử dụng Cookies để giãn cách thời gian hiển thị.

Tự tạo mã quảng cáo Popup/Popunder, có hỗ trợ Cookies

Xử lí Cookies

Đầu tiên, các bạn thêm các hàm sau.

function deleteCookie(name) {
    document.cookie = `${encodeURIComponent(name)}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
}

function getCookie(name) {
    const nameEQ = encodeURIComponent(name) + "=";
    const cookies = document.cookie.split("; ");
    for (const cookie of cookies) {
        if (cookie.startsWith(nameEQ)) {
            return decodeURIComponent(cookie.substring(nameEQ.length));
        }
    }
    return "";
}

function setCookie(name, value, hours) {
    const expires = new Date(Date.now() + hours * 60 * 60 * 1000).toUTCString();
    document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}; expires=${expires}; path=/`;
}

Popup

Hàm popUp để đặt trang cần hiển thị và thời gian giãn cách.

function popUp() {
    if (!getCookie('initPopup')) {
        setCookie('initPopup', 'InitHTML', 24);
        const popup = window.open('https://inithtml.com/', '_blank');
        if (popup) {
            popup.focus();
        }
    }
}

Với 24 là số tiếng đồng hồhttps://inithtml.com/ là trang đích.

Ngẫu nhiên 2 trang đích khác nhau.

function popUpRandom() {
    const randomNumber = Math.random() < 0.5 ? 1 : 2;
    const popups = {
        1: { cookie: 'initPopup', value: 'InitHTML', url: 'https://inithtml.com/#link-1' },
        2: { cookie: 'initPopup2', value: 'InitHTML2', url: 'https://inithtml.com/#link-2' }
    };

    const { cookie, value, url } = popups[randomNumber];

    if (!getCookie(cookie)) {
        setCookie(cookie, value, 24);
        const popup = window.open(url, '_blank');
        if (popup) {
            popup.focus();
        }
    }
}

Mở trang đích ở tab hiện tại, tab hiện tại nhảy qua tab mới (đang được nhiều người sử dụng).

function popUpNewTab() {
    if (!getCookie('initPopup')) {
        setCookie('initPopup', 'InitHTML', 24);

        const currentUrl = location.href;
        const popup = window.open(currentUrl, '_blank');

        location.href = 'https://inithtml.com/'; // Trang đích

        if (popup) {
            popup.focus();
        }
    }
}

Sau cùng, các bạn áp dụng sự kiện để hiển thị.

$(function () {
    const popupHandler = popUp; // Thay bằng popUpRandom hoặc popUpNewTab nếu muốn

    $('body').one('click', function () {
        popupHandler();
    });
});

Loại trừ một số thành phần không muốn bị nhảy quảng cáo. Ví dụ mình loại trừ #logo là Logo của trang, .my-banner là các quảng cáo tự gắn và .net-banner là quảng cáo của mạng quảng cáo.

$(function () {
    const excludedSelectors = ['#logo', '.my-banner', '.net-banner'];
    const popupHandler = popUp; // Thay bằng popUpRandom hoặc popUpNewTab nếu muốn

    $('body').one('click', function (e) {
        for (const selector of excludedSelectors) {
            if ($(e.target).closest(selector).length) return;
        }
        popupHandler();
    });
});

Popunder

Lưu ý: Do các cập nhật bảo mật gần đây của các trình duyệt, dạng mở tab / chuyển hướng kiểu này có thể bị chặn hoặc không còn hoạt động đúng.

Đầu tiên, các bạn tạo một tập tin chuyển tiếp đặt là r.php chẳng hạn, nội dung như sau.

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="utf-8">
    <meta name="robots" content="noindex">
    <meta http-equiv="refresh" content="5;url=<?php echo htmlspecialchars($_GET['url'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
    <title>Đang chuyển hướng...</title>
    <style>
        body { 
            font-family: sans-serif; 
            text-align: center; 
            margin-top: 20vh; 
        }
    </style>
</head>
<body>
<?php
    $url = $_GET['url'] ?? '';
    if (filter_var($url, FILTER_VALIDATE_URL)) :
?>
    <p>Đang chuyển hướng bạn đến: <a href="<?php echo htmlspecialchars($url, ENT_QUOTES, 'UTF-8'); ?>"><?php echo htmlspecialchars($url, ENT_QUOTES, 'UTF-8'); ?></a></p>
    <p>Nếu không tự động chuyển, <a href="<?php echo htmlspecialchars($url, ENT_QUOTES, 'UTF-8'); ?>">bấm vào đây</a>.</p>
    <script>
        setTimeout(function () {
            try {
                window.resizeTo(screen.width, screen.height);
            } catch (e) {}
        }, 1000);
    </script>
<?php else : ?>
    <p>URL không hợp lệ hoặc thiếu tham số. <button onclick="window.close();">Đóng cửa sổ</button></p>
<?php endif; ?>
</body>
</html>

Tiếp đó, tạo hàm popUnder() để nhảy ra một cửa sổ cực nhỏ ở góc màn hình, chuyển đến r.php?url= vừa mới tạo.

$(function () {
    const popupHandler = popUnder;

    $('body').one('click', function () {
        popupHandler();
    });
});

function popUnder() {
    if (!getCookie('initPopunder')) {
        setCookie('initPopunder', 'InitHTML', 24);

        const popup = window.open(
            'r.php?url=' + encodeURIComponent('https://inithtml.com/'),
            '_blank',
            'toolbar=no,scrollbars=yes,resizable=yes,width=100,height=100,left=' + screen.width + ',top=' + screen.height
        );

        if (popup) {
            window.focus(); // Trả lại focus cho cửa sổ chính
        }
    }
}

Vậy là đã xong rồi, các bạn có thể tải về hoặc xem thử ở liên kết bên dưới nhé.

Xem demo Tải về

Chúc các bạn thành công!

Bình luận


6 bình luận
  • VNSUB

    08/09/2023 lúc 23:21

    khó hiểu quá

  • Blogkimchi

    05/04/2023 lúc 13:14

    mình chèn bị lỗi ngay từ code đầu tiên:
    syntax error, unexpected ‘)’, expecting variable (T_VARIABLE) cái chỗ:

    function deleteCookie(name) {
        document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    }
  • Quang

    10/02/2022 lúc 15:45

    mình hơi kem. bạn hướng dẫn cụ thể hơn về pop under được không. mình dùng wordpress thì hàm cookie cho vào file nào.
    hàm popUnder() này đặt ở đâu.
    mình muốn khách truy cập web của mình lần đầu thì nó tự mở ra 1 tab ẩn ở dưới.
    Mong được bạn phản hồi.

    • Admin

      11/02/2022 lúc 13:39

      Chào bạn, bạn xem demo của mình rồi copy mấy cái trong rồi bỏ cả cái đó vào trước nhé bạn. Nếu theme bạn đang dùng không có có thể cài thêm plugin https://vi.wordpress.org/plugins/insert-headers-and-footers/.

  • nguyễn ngan

    28/09/2020 lúc 07:08

    cái này mà pop up không phải popunder ad ơi, cho mình xin popunder với, popup tỷ lệ thoát cao quá

    • Admin

      28/09/2020 lúc 12:25

      để mình bổ sung sau :v

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...