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

如何根据文本内容有条件阻止浏览器Alert弹窗?

解决思路与修正方案

你的核心思路是对的——通过重写window.alert来拦截特定内容的弹窗,但目前的代码有个关键漏洞:你覆盖原生alert后,没有在else分支里调用原本的弹窗逻辑,导致除了'hi'之外的内容也无法正常弹出alert了。

修正后的代码实现

要解决这个问题,我们需要先保存原生的alert函数,这样在需要正常弹窗时还能调用它:

// 先缓存原生的alert函数,避免重写后丢失
const originalAlert = window.alert;

window.alert = function(text) {
  if (text === 'hi') {
    console.log('Prevented alert Box');
  } else {
    // 调用原生alert显示正常弹窗
    originalAlert(text);
  }
};

关键细节说明

  • 必须先保存原生alert:当你重写window.alert时,原来的函数引用会被覆盖,如果不提前缓存,就再也无法调用原生弹窗功能了。
  • 使用严格相等===:相比==,严格相等不会进行自动类型转换,能避免比如text == 123匹配到字符串'123'这类意外情况,让判断更精准。

测试验证

  • 调用alert('hi'):控制台会打印Prevented alert Box,不会弹出弹窗。
  • 调用alert('Hello there!'):会正常弹出包含对应内容的alert窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:50:16