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

如何使用sessionStorage让Bootstrap模态框横幅在单会话内仅展示一次

解决方案

你只需要修改原来的脚本逻辑,加入sessionStorage的判断和存储逻辑即可,无需调整模态框的HTML结构,修改后的代码如下:

完整修改后的脚本部分

@if (Model.IsOptinEligible == true)
{
    <script>
        $(function () {
            // 仅当会话周期内没有关闭过该横幅时才弹出
            if (!sessionStorage.getItem('eligibility_banner_closed')) {
                $("#memberEligibilityPopup").modal('show');
            }

            // 监听模态框关闭事件,关闭后写入会话标记
            $('#memberEligibilityPopup').on('hidden.bs.modal', function () {
                sessionStorage.setItem('eligibility_banner_closed', 'true');
            });
        });
    </script>
}

逻辑说明

  • 页面加载时先读取sessionStorage中的关闭标记,不存在标记才执行模态框弹出逻辑
  • 绑定Bootstrap模态框原生的hidden.bs.modal事件,无论用户通过关闭按钮、还是点击跳转按钮关闭模态框,只要模态框完全隐藏就会触发该事件,写入关闭标记到sessionStorage
  • sessionStorage是会话级存储,只要用户不关闭当前浏览器标签/整个浏览器,标记会一直生效,跳转其他页面再返回仪表板也不会重复弹出;关闭浏览器后标记自动清除,下次打开站点会正常触发首次展示

测试方法

如果需要调试弹窗效果,可以打开浏览器控制台的「Application/存储」选项卡,找到Session Storage下的当前站点域名,删除eligibility_banner_closed键后刷新页面即可重新看到弹窗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:39:02