Замена стандартным JavaScript диалогам.
Впервые такая мысль мысль пришла в голову, когда я занимался разработкой мода Full AlJAX для phpBB3 Там я старался выдержать все элементы управления в едином стиле и стандартные диалоговые окна казались мне довольно убогими и некрасивыми. Тогда я предпринял пару неубедительных попыток решить эту проблему, но до ума так и не довел.
А сегодня я вдруг вспомнил о той давней идее и решил ее осуществить, тем более, что с тех пор я накопил кое-какую полезную инфу по теме.
Результатом стал набор из трех функций myAlert(), myConfirm() и myPrompt(), которые реализовали функционал стандартных диалогов при помощи слоев и DOM.
Благодаря этому внешний вид диалогов можно легко подогнать под любой стиль, используя лишь CSS.
Ниже я привожу пример моего диалога:
<script src="http://nevkontakte.org.ru/files/cooldialog.js.txt"></script>
<style>
.popup_dialog {
/* Netscape 4, IE 4.x-5.0/Win and other lesser browsers will use this */
position: absolute;
top: 150px;
left: 0;
width: 300px;
background-color: #f6f4d0;
padding: 10px;
border: dotted 2px #105289;
z-index: 100;
text-align: center;
}
body > div.popup_dialog {
/* used by Opera 5+, Netscape6+/Mozilla, Konqueror, Safari, OmniWeb 4.5+, iCab, ICEbrowser */
position: fixed;
}
div.popup_dialog {
/* IE5.5+/Win - this is more specific than the IE 5.0 version */
top: expression(
(
150 +
(
ignoreMe = document.documentElement.scrollTop ?
document.documentElement.scrollTop: document.body.scrollTop
)
) + "px"
);
}
.popup_control {
cursor: pointer;
cursor: hand;
font-size: 10px;
}
.popup_headerbar {
text-align: right;
}
.popup_buttons {
margin: 10px 0 0 0;
text-align: center;
}
/*.popup_buttons input {
float: left;
}*/
.popup_content {
display: block;
padding: 10px;
}
</style>
<script>
function testDlg() {
myPrompt("Введите ваше имя:", "Алекс", function (result) {
if (!result) {
result = "Анонимус";
}
alert("Ваше имя:" + result);
});
}
</script>
Скачать: dialog.zip