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

如何为基于Cookie的弹窗添加3秒延迟?

解决弹窗延迟显示问题

你的代码无效的原因是使用了错误的语法:$(document).setTimeout 不是合法调用方式,setTimeout 是全局函数,应直接调用。同时你移除了 $(document).ready 包裹,这会导致代码可能在DOM元素加载完成前执行,无法找到 .popup-overlay-b 元素。

正确实现方案

方案1:保持原逻辑(弹窗显示时设置Cookie)

该方案和你原代码逻辑一致,仅当弹窗实际显示时才设置Cookie。但如果用户在延迟期间刷新页面,会再次触发弹窗调度:

$(document).ready(function(){
    if (!Cookies.get('alert')) { 
        setTimeout(function(){
            $('.popup-overlay-b').show(); 
            Cookies.set('alert', true, { expires: 1 });
        }, 3000); // 3秒延迟
    }
});

方案2:立即设置Cookie(避免重复调度)

该方案会在页面加载时立即设置Cookie,即使弹窗还未显示,用户刷新页面也不会重复触发弹窗:

$(document).ready(function(){
    if (!Cookies.get('alert')) { 
        Cookies.set('alert', true, { expires: 1 });
        setTimeout(function(){
            $('.popup-overlay-b').show(); 
        }, 3000); // 3秒延迟
    }
});

关键说明

  • 必须保留 $(document).ready 确保DOM加载完成后再执行代码
  • setTimeout 是全局函数,直接调用即可,无需绑定到 $(document)
  • 根据业务需求选择合适的Cookie设置时机

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:12:09