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

重写window.alert后,如何获取被覆盖的原始alert提示文本?

解决重写window.alert后获取提示文本的问题

嘿,这个场景我之前也遇到过,其实核心点特别简单——你漏了alert函数本身的参数传递!

首先得明确:原生window.alert()的第一个参数就是要展示的提示文本,根本不需要通过this去拿。另外,记得一定要先缓存原生的alert方法,不然重写之后想再调用原生弹窗功能就麻烦了。

给你贴个完整的可用示例:

// 第一步:先缓存原生alert,这步必须在重写之前做!
const originalAlert = window.alert;

// 第二步:重写alert函数,接收提示文本参数
window.alert = function(message) {
  // 这里的message就是你要获取的提示文本
  console.log('拿到的alert提示内容:', message);
  
  // 如果还想保留原生弹窗的功能,就调用缓存的原始方法
  // 用call绑定window作为上下文,保证原生方法正常运行
  originalAlert.call(window, message);
};

你之前的代码拿不到文本,是因为自定义函数没定义参数,而且this指向window是完全正常的——毕竟alert是window的方法,调用时上下文本来就是window,但文本内容从来不是存在this里的,而是通过函数参数传递的呀!

要是你已经重写了alert但没缓存原生方法,赶紧把缓存步骤补到重写代码的前面,不然之后想恢复原生功能就难咯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:20:43