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

Angular中Razorpay支付或模态框关闭后垂直滚动条消失问题求助

RazorPay模态框关闭后页面无法滚动解决方案

问题根因

你之前的方案失效核心是直接通过$('body').css('overflow', 'auto')给body添加了内联样式,内联样式优先级远高于Bootstrap通过.modal-open类设置的overflow: hidden规则,导致后续打开Bootstrap模态框时原生逻辑被覆盖失效。

最优解决方案

方案1:仅清理内联样式(无侵入,推荐)

不要手动给overflow赋值,只需要移除RazorPay添加的overflow内联样式,就能让样式控制权交还给Bootstrap的类规则,完全不干扰原有模态框逻辑。
修改你的RazorPay配置代码如下:

handler: function (response) {
  // 清空overflow内联样式,恢复CSS类优先级控制
  $('body').css('overflow', '');
},
modal: {
  ondismiss: function () {
    $('body').css('overflow', '');
  },
}

方案2:全局监听自动处理(兜底方案)

如果不想修改现有RazorPay调用逻辑,可以全局初始化一个MutationObserver自动处理样式冲突:

// 全局初始化一次即可
const bodyObserver = new MutationObserver((mutations) => {
  mutations.forEach(item => {
    if (item.attributeName === 'style') {
      const bodyEl = document.body;
      // 当body overflow被设为hidden,且没有Bootstrap模态框打开时,清除冗余样式
      if (bodyEl.style.overflow === 'hidden' && !bodyEl.classList.contains('modal-open')) {
        bodyEl.style.overflow = '';
      }
    }
  });
});
bodyObserver.observe(document.body, { attributes: true });

额外兼容规则

可以在全局CSS中添加如下规则,确保Bootstrap模态框打开时滚动条一定被隐藏,避免优先级冲突:

body.modal-open {
  overflow: hidden !important;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:45:03