gpt4 book ai didi

javascript - JS - 暂停自定义警报()

转载 作者:行者123 更新时间:2023-11-30 16:46:08 26 4
gpt4 key购买 nike

我编辑了默认的 alert()像这样的功能:

window.alert = function(str){
//custom alert
}

本质上,新函数将显示一个 HTML <div>模态。

背景故事:

我想回答这个问题,因为我遇到了问题。警报是隐藏的,将在调用自定义警报功能时显示。所以自定义警报基本上是显示元素并更改它的文本。 因此,当我有多个 alert()来电,只显示最后一条消息! :(

但是,不同于默认的警告框。它当然不会暂停网页,直到警报像默认设置一样消失 alert()功能。

是否可以模仿这种“暂停网页”的行为?

此外,除了使用 setTimeout() 之外,还有其他方法吗?检查是否isCustomAlertOpen == true延迟另一个自定义警报的触发,直到当前警报被解除?


编辑:

有没有办法对自定义警报进行排队?

我不介意 jQuery,但我认为它在这里可能过于强大。

我的问题标题不好。有人可以为我想出更好的标题吗?

最佳答案

无法阻止执行,因为 JavaScript 是异步的(显然 3 模态函数和 XmlHttpRequest 除外)。

出于同样的原因,您不能等待之前的警报关闭,但您可以使用事件来使用此模式创建警报堆栈:

window.alert = (function() {
var stack = [];

var showNextAlert = function() {
var div = document.createElement("div");
/* Here, configure the div, show the string from stack[0] and add it to the document ... */
var okButton = /* ... */;

okButton.addEventListener("click", function() {
div.parentNode.removeChild(div);

stack = stack.slice(1);

if(stack.length > 0) {
showNextAlert();
}
});
}

return function(msg) {
stack.push(msg);

if(stack.length == 1) {
// Show it immediately if the stack is empty
showNextAlert();
}
};
})();

您还应该为此函数使用另一个名称,而不是更改 native 属性(此处为 window.alert)。

关于javascript - JS - 暂停自定义警报(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com