更改JavaScript Alert()或Prompt()的外观

9 javascript alert prompt

有没有办法在JavaScript中更改警报提示的外观 ?添加图像,更改字体颜色或大小等内容会让它看起来与众不同.

Dav*_*ogo 5

扩展 Matthew Abbott 的想法,令我震惊的是,您想要一个使用普通旧 Javascript 而不依赖任何框架的答案。这是一个快速而肮脏的页面,它发出一个带有简单关闭按钮的 div 和在中心显示的消息:

警报框和警报关闭按钮的粗略 CSS

#alertBox{
    position:absolute;
    top:100px;
    left:100px;
    border:solid 1px black;
    background-color: #528CE0;
    padding: 50px;
    visibility: hidden;
}
#alertClose{
    position: absolute;
    right:0;
    top: 0;
    background-color: black;
    border: solid 1px white;
    color: white;
    width: 1em;
    text-align: center; 
    cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)

然后一些javascript来覆盖内置的警报函数并提供一个关闭函数来处理alertClose上的点击事件。

function closeAlertBox(){
    alertBox = document.getElementById("alertBox");
    alertClose = document.getElementById("alertClose");
    alertBox.style.visibility = "hidden";
    alertClose.style.visibility = "hidden";
}
window.alert = function(msg){
    var id = "alertBox", alertBox, closeId = "alertClose", alertClose;
    alertBox = document.createElement("div");
    document.body.appendChild(alertBox);
    alertBox.id = id;
    alertBox.innerHTML = msg;
    alertClose = document.createElement("div");
    alertClose.id = closeId;
    alertClose.innerHTML = "x";
    alertBox.appendChild(alertClose);
    alertBox.style.visibility = "visible";
    alertClose.style.visibility = "visible";
    alertClose.onclick = closeAlertBox;
};
Run Code Online (Sandbox Code Playgroud)

正如 Matthew Abbott 建议的那样,调用alert,现在会显示您刚刚创建的 div,然后单击 x 通过使其不可见来将其关闭。

alert("hello from the dummy alert box.");
Run Code Online (Sandbox Code Playgroud)

要实现,您需要在警报功能中进行测试,以确保您不会重新创建 div 一百万次,并且您需要修改 CSS 以使其适合您的配色方案等,但这是如何实现您自己的警报框的大致形式。

对我来说这似乎有点矫枉过正,我同意 Matthew 的观点,从长远来看,使用 jQuery 或 YUI 等著名框架创建的某种对话框或模式元素会更好,而且更容易。


Mat*_*ott 3

和函数调用浏览器提供alertpromptAPI,因此您无法控制它们的外观。

可以做的是重新定义这些函数,并且可以使用类似 jQuery 模式的东西,例如:

window.alert = function(message) {
    // Launch jQuery modal here..
};

window.prompt = function(message) {
    // Launch jQuery modal here..
};
Run Code Online (Sandbox Code Playgroud)