如何“自动关闭”警告框

3
我们有一个控件,是由一家已不存在的公司制作的。出现了一些奇怪的情况,页面加载时它开始呈现以下内容:
<script type="text/javascript">
 alert('Your license has expired!')
</script>

由于该公司已不存在,我们无法获得支持。 此外,控件也非常复杂,并在一些无法快速替换的旧代码中运行,因此简单地重写页面也不是一个选项(尚未)。

目前我需要做的是在页面呈现之前将对话框从页面中移除或通过某些脚本自动关闭...

有什么想法吗?


重复的问题:https://dev59.com/BHRB5IYBdhLWcg3w7rmV - Swapnil
请看这里:https://dev59.com/NmUp5IYBdhLWcg3wLVKn - Atrox111
@Atrox111,那对于OP的问题没有帮助。 - epascarello
2个回答

17

你无法关闭警告框,但可以劫持window.alert。

window._alert = window.alert;
window.alert = function () {    
};

在第三方库的代码之前,必须出现这段代码。这意味着如果您想使用警报,您需要更改您的代码。

一种方法是调用具有该引用的方法。

window._alert("hi");

另一种方法是重载 "new" 函数。

window._alert = window.alert;
window.alert = function (msg, showItNow) {    
    if (showItNow) {
        window._alert(msg);
    }
};
window.alert("BOOOO!");  //I will not show up
window.alert("hi", true); //I will show up

1
如果第三方代码立即触发警报,则可以在第三方代码执行后恢复警报功能:window.alert = window._alert;。当然,如果警报是异步触发的,则此方法无效。 - Strille
1
Epascarello的解决方案的一个变化是,不是发送布尔值来决定是否应该出现真正的警报窗口,而是检查msg是否为“您的许可证已过期!”在这种情况下,忽略调用window._alert()。 - Strille
@Strille,老兄,我今天早上还没喝咖啡呢,你这主意不错!哈哈 - epascarello
当需要hack时...堆栈溢出是家 :) - War

-1

我认为你不能这样做,因为提示框需要确认。你可以改为制作弹出式警报,并设置超时关闭。


我可以看到你没有阅读原帖。原帖作者对警告没有任何控制权。 - epascarello

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接