我希望在包含特定字符串时覆盖警告框的样式,否则保留为默认字符串。我已尝试控制日志记录,因此我可以将if条件放入,但响应的方式如下:
function alert() { [native code] }
当我尝试了以下不同的东西时:
window.old_alert = window.alert;
window.alert = function(message){
console.log(message);
alert(message);
}
我在控制台中收到警告消息,但由于未知原因,它会超过1000次冻结我的浏览器,并且窗口中没有任何弹出窗口。这应该如何处理?任何帮助或指导都非常受欢迎。
答案 0 :(得分:3)
window.old_alert = window.alert;
window.alert = function(message){
console.log(message);
alert(message); //THIS called the new alert recursively, hence the freeze
}
您想要做的是:
window.oldAlert = window.alert;
window.alert = function(message) {
var SpecificString="test";
if(message.indexOf(SpecificString) >= 0) {
console.log(message);
} else {
window.oldAlert(message);
}
}
答案 1 :(得分:1)
您刚刚使用该代码进行了无限递归!
window.old_alert = window.alert;
window.alert = function(message){
console.log(message);
alert(message); // this calls your modified alert causing an infinite recursion
}
您需要的是:
window.old_alert = window.alert;
window.alert = function(message){
if(message === "some special string") my_new_alert(message); // call special alert
else old_alert(message); // this calls the original alert
}
..
my_new_alert = function(message) {
// modified alert UI
}
答案 2 :(得分:1)
您可以像这样覆盖alert
,但无法更改警告框的默认样式。如果您需要不同的样式警报,则需要使用自己的弹出对话框。
var old_alert = window.alert;
window.alert = function() {
console.log(arguments[0]);
return old_alert.apply(this, arguments);
};