Расширяя идею Мэтью Эбботта, меня поразило, что вы хотите получить ответ, который использует старый добрый Javascript без обращения к каким-либо фреймворкам. Вот быстрая и грязная страница, которая выдает div с простой кнопкой закрытия и сообщением, представленным в центре:
Грубый CSS для alertBox и кнопки alertClose
#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;
}
Затем некоторые javascript переопределяют встроенную функцию оповещения и предоставляют функцию закрытия для обработки события click на 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;
};
Вызов alert
, как предположил Мэтью Эбботт, теперь отображает только что созданного вами div, а нажатие на x отклоняет его, делая его невидимым.
alert("hello from the dummy alert box.");
Для реализации вам понадобится тест в функции оповещения, чтобы убедиться, что вы не воссоздаете div миллион раз, и вам нужно возиться с CSS, чтобы он соответствовал вашему цвету. схема и т. д., но это грубая форма реализации собственного окна оповещения.
Мне кажется это излишним, и я согласен с Мэтью, что делать это с помощью какого-то диалогового или модального элемента, созданного с помощью известного фреймворка, такого как jQuery или YUI, было бы лучше и странно проще в долгосрочной перспективе.