You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置jQuery弹窗关闭后一周内再次访问时不再显示?

当然可以!要实现「关闭弹窗后一周内不再显示」的需求,我们可以用Cookie或者localStorage来持久化用户的关闭状态,结合你现有的jQuery代码就能轻松搞定。下面是具体的实现方案:

核心思路

我们需要在用户点击关闭按钮时,存储一个带过期时间的标记(比如一周后过期);每次页面加载或滚动触发弹窗前,先检查这个标记是否存在且未过期——如果存在,就跳过弹窗显示逻辑。

具体代码修改

你已经引入了jQuery 1.11.3,完全满足需求,接下来按以下步骤调整代码:

1. 先封装Cookie操作工具函数(推荐用Cookie,支持明确的过期时间设置)

先添加两个简单的函数,用来设置和读取Cookie:

// 设置Cookie,支持指定过期天数
function setCookie(name, value, days) {
    let expires = "";
    if (days) {
        const date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = `${name}=${value || ""}${expires}; path=/`;
}

// 读取指定名称的Cookie
function getCookie(name) {
    const nameEQ = `${name}=`;
    const cookieArr = document.cookie.split(';');
    for(let i = 0; i < cookieArr.length; i++) {
        let c = cookieArr[i];
        while (c.charAt(0) === ' ') c = c.substring(1);
        if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length);
    }
    return null;
}

2. 修改弹窗触发逻辑(比如你的checkShowDiv函数)

在原来的滚动触发逻辑前,先检查Cookie是否存在:

function checkShowDiv() {
    // 先检查用户是否已经关闭过弹窗且未过期
    const hasClosedPopup = getCookie('popup_closed');
    if (hasClosedPopup === 'true') {
        return; // 有有效标记,直接跳过弹窗显示
    }

    // 保留你原来的滚动触发逻辑(示例,替换成你实际的代码)
    const scrollTop = $(window).scrollTop();
    const windowHeight = $(window).height();
    const documentHeight = $(document).height();
    
    if (scrollTop > (documentHeight - windowHeight) / 2) {
        $('#your-popup-id').fadeIn(); // 替换成你实际的弹窗ID
        // 防止滚动时重复触发,可移除滚动监听
        $(window).off('scroll', checkShowDiv);
    }
}

3. 修改关闭按钮的点击事件

当用户点击关闭按钮时,设置一个7天后过期的Cookie:

// 替换成你实际的关闭按钮选择器
$('.popup-close-btn').on('click', function() {
    $('#your-popup-id').fadeOut(); // 隐藏弹窗
    // 设置Cookie,标记用户已关闭,7天后过期
    setCookie('popup_closed', 'true', 7);
    // 如果原来有会话级别的阻止逻辑(比如用变量),可以删掉了
});

可选:用localStorage替代Cookie

如果你更倾向于用localStorage(不需要和服务器交互,存储量更大),可以用以下工具函数替换Cookie相关代码:

// 设置带过期时间的localStorage
function setLocalStorageWithExpiry(key, value, days) {
    const now = new Date();
    const item = {
        value: value,
        expiry: now.getTime() + days * 24 * 60 * 60 * 1000
    };
    localStorage.setItem(key, JSON.stringify(item));
}

// 获取localStorage并自动检查过期
function getLocalStorageWithExpiry(key) {
    const itemStr = localStorage.getItem(key);
    if (!itemStr) return null;
    
    const item = JSON.parse(itemStr);
    const now = new Date();
    // 如果已过期,移除数据并返回null
    if (now.getTime() > item.expiry) {
        localStorage.removeItem(key);
        return null;
    }
    return item.value;
}

然后把触发逻辑里的getCookie改成getLocalStorageWithExpiry('popup_closed'),关闭按钮点击时改成setLocalStorageWithExpiry('popup_closed', 'true', 7)即可。

注意事项
  • 记得把代码中的#your-popup-id和.popup-close-btn替换成你实际项目中的弹窗ID和关闭按钮选择器。
  • Cookie的path=/确保在整个网站域名下都有效,如果你只想让这个标记在特定页面生效,可以修改path的值(比如path=/popup-dev/)。

这样修改后,用户关闭弹窗后,一周内再次访问页面时,弹窗都不会自动弹出啦!

内容的提问来源于stack exchange,提问作者Mara Barn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:50:56