You need to enable JavaScript to run this app. 静态网站订阅弹窗每次刷新都弹出,如何实现用户操作后永久不展示?
优惠活动
大模型
产品
解决方案
定价
更多

静态网站订阅弹窗每次刷新都弹出,如何实现用户操作后永久不展示?

问题原因

  • 你当前设置的Cookie未指定过期时间,属于会话Cookie,仅在当前浏览器进程生效,关闭浏览器后会自动被清除,这是你重启浏览器后弹窗再次出现的核心原因。
  • Cookie触发逻辑不合理:当前绑定的是.close元素的mouseenter(鼠标移入)事件,不仅用户点击Subscribe、Not Now按钮时不会触发Cookie设置,甚至鼠标不小心滑过关闭按钮就会误触发Cookie写入,不符合需求。

修改方案

你可以直接替换为以下代码,我已经做了逻辑修正:

$(document).ready(function () {
    // 先判断用户是否已经关闭过弹窗
    if (!$.cookie("dismiss")) {
        $('.modal').appendTo("body");
        function show_modal() {
            $('.modal').modal();
        }
        window.setTimeout(show_modal, 300);
    }

    // 封装永久禁用弹窗的Cookie设置函数,过期时间设为10年等效永久生效
    function setDismissCookie() {
        // 原生Cookie写法,兼容所有环境
        document.cookie = "dismiss=true; max-age=315360000; path=/";
        // 如果你用了jQuery.cookie插件,也可以用下方写法替换上面的原生写法,二选一即可
        // $.cookie('dismiss', 'true', { expires: 3650, path: '/' });
    }

    // 给所有触发弹窗关闭的元素绑定点击事件,点击后永久禁用弹窗
    // 注意:下面的.not-now-btn、.subscribe-btn需要替换为你页面上对应按钮实际的类名/ID选择器
    $(".close, .not-now-btn, .subscribe-btn").click(function() {
        setDismissCookie();
        // 如果你的按钮点击后已经自带关闭弹窗逻辑,可以删掉下面这行
        $('.modal').modal('hide');
    });
});

补充说明

配置里的path=/是保证Cookie在全站所有页面都生效,避免出现只有弹窗出现的页面才能读取到Cookie的问题。

内容的提问来源于stack exchange,提问作者Shoyeb Mohammed Suny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 10:06:03