var a=window.prompt;
window.prompt = function (message) {
alert('Начали!');
return a(message,'сюда вот...');
}
alert('Вы ввели: '+prompt('Введите текст'));
alert('Начали!');
. хорошо. Представим, что я сделал окошко, показал его. А дальше что? А дальше потечет кровь из глаз, потому что вы все равно выводите этот мерзопакостный промпт.не появится он никак!
return a(message,'сюда вот...');
пишем: return inputVar;
а inputVar - это то, что Вы соберёте окошком!a(...)
window.prompt = function () {
//сюда вставляем код...
return inputVar;
}
var r=prompt();
Как в функции дождаться события клика на кнопку ОК, чтобы потом достать значение из инпута и вернуть через return?А разве оно само не ждёт события?
// Создаем событие
HANDLE event = CreateEvent(NULL, FALSE, FALSE, NULL);
// Делаем так, чтобы событие случилось (не знаю, как выразиться)
SetEvent(event);
//Бесконечно ждем, пока случится это событие
WaitForSingleObject(event, INFINITE);
//Пока открыта модалка:
window.modalOpened = true;
function wait(){
//здесь открываем модалку
while(window.modalOpened) {}
// здесь достаем инормацию и возвращаем ее
}
Можно поставить задержку, если будет сильно напрягать браузер.Вот это вообще Epic Fail! Никогда не делайте через таймеры и тем более, таймеры ещё больше напрягают браузер! Только по событиям всё делайте.
<div class="modal-fade" id="field-fade" onclick="toggleDisplayNotice('field-fade');" >
<div class="notice" onclick="event.stopPropagation()">
<div class="modal-content">
<span id="field-text"></span><br />
<input class="lightField smallField" />
<div class="textCenterer">
<div class="darkBtn smallBtn noFloat" onclick="toggleDisplayNotice('field-fade');" >Ok</div>
</div>
</div>
</div>
</div>
// По умолчанию блок скрыт (display: none)
function toggleBlockDisplay(modalFade) {
var disp = modalFade.css("display");
if (disp == "block") modalFade.css("display", "none");
else if (disp == "none") modalFade.css("display", "block");
}
// установка display: block и плавное появление
function toggleBlockOpasity(modalFade) {
var opas = modalFade.css("opacity");
if (opas == 1) {
modalFade.css("opacity", 0);
setTimeout(function() {
toggleBlockDisplay(modalFade);
}, 200);
}
else if (opas == 0) {
toggleBlockDisplay(modalFade);
setTimeout(function() {
modalFade.css("opacity", 1);
}, 100);
}
}
function showField(text, callback) { //текст, который нужно вставить в модалку и функцию, которую нужно вызвать при клике на ОК
$("#field-text").html(text);
toggleDisplayNotice('field-fade');
$("#field-fade .darkBtn").click(callback);
}
PS: вот так делают на jquery: https://stackoverflow.com/a/35196852