关闭后隐藏 Bootstrap Toast 24 小时

Hide Bootstrap Toast for 24 hours after dismissed

我正在使用 Bootstrap 5 个祝酒词来显示广告。如果用户关闭广告,我希望广告对用户消失 24 小时。

当前代码:

<div class="position-sticky bottom-0" style="z-index: 5">
    <div class="toast hide text-center text-white bg-primary border-0" id="cbAd" role="alert" aria-live="assertive" aria-atomic="true" style="width: 100%; border-radius: 0;">
        <div class="toast-header">
            <strong class="me-auto">Ad</strong>
            <small>Website.com</small>
            <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
        </div>
        <div class="toast-body" style="transform: rotate(0);">
        This is the advertisement text.
        <div class="mt-1"><a class="btn btn-success stretched-link" href="">Buy Something</a></div>
        </div>
    </div>
</div>

Javascript:

var option = {
    animation: true,
    autohide: false
};
function cbToast( ) {
    var toastElementHTML = document.getElementById( 'cbAd' );
    var toastElement = new bootstrap.Toast( toastElementHTML, option );

    toastElement.show();
}
setTimeout(cbToast, 5000);

我如何使用本地存储完成此操作?

<button onclick="closeAd()" type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
function closeAd() {
    document.getElementById( 'cbAd' ).style.display = "none";
    let expire_time = new Date();
    expire_time.setDate(expire_time.getDate() + 1);
    localStorage.setItem("close_expire_time", expire_time.getTime());
    // Notice that getTime() convert it back to Unix_time
}

function cbToast() {
    // ... your code
    if (isShowAd()) toastElement.show();

    function isShowAd() {
        const expire_time = localStorage.getItem("close_expire_time"),
            current_time = new Date().getTime();
        
        // easy to read version
        if (!expire_time) {
            return true; // not exist
        } else {
            if (expire_time - current_time > 0) {
                console.log(`${expire_time - current_time}ms before expired`);
                return false; // not expire yet
            } else {
                return true; // expired
            }
        }

        // short version
        return !expire_time ? true : ((expire_time - current_time > 0) ? false : true);
    }
}