В JavaScript, вы не остановитесь, пока вы ожидая действия пользователя: вы устанавливаете обратный вызов (функцию), который ваш диалог вызывает при закрытии.
Вот пример небольшой диалоговой библиотеки, где вы можете увидеть, как можно передавать обратные вызовы.
dialog = {};
dialog.close = function() {
if (dialog.$div) dialog.$div.remove();
dialog.$div = null;
};
// args.title
// args.text
// args.style : "", "error" (optionnel)
// args.buttons : optional : map[label]->function the callback is called just after dialog closing
// args.doAfter : optional : a callback called after dialog closing
dialog.open = function(args) {
args = args || {};
if (this.$div) {
console.log("one dialog at a time");
return;
}
var html = '';
html += '<div id=dialog';
if (args.style) html += ' '+args.style;
html += '><div id=dialog-title>';
html += '</div>';
html += '<div id=dialog-content>';
html += '</div>';
html += '<div id=dialog-buttons>';
html += '</div>';
html += '</div>';
this.$div=$(html);
this.$div.prependTo('body');
$('#dialog-title').html(args.title);
$('#dialog-content').html(args.text);
var buttons = args.buttons || {'Close': function(){return true}};
for (var n in buttons) {
var $btn = $('<input type=button value="'+n+'">');
$btn.data('fun', buttons[n]);
$btn.click(function(){
if ($(this).data('fun')()) {
dialog.close();
if (args.doAfter) args.doAfter();
}
});
$btn.appendTo($('#dialog-buttons'));
}
this.$div.show('fast');
shortcuts.on('dialog', {
27: function(){ // 27 : escape
dialog.close();
}
});
}
Два образца вызова:
dialog.open({
title: 'ccccc Protection Error',
text: 'There was an error related to cccc Protection. Please consult <a href=../cccc.jsp>this page</a>.',
style: 'error'
});
var ok = false;
dialog.open({
title: sometitle,
text: someHtmlWithInputs,
buttons: {
'OK': function() {
if (// inputs are valid) ok = true;
return true;
},
'Cancel': function() {
return true;
}
},
doAfter: function() {
if (ok) {
if (newvg) {
cccmanager.add(vg);
} else {
cccmanager.store();
}
if (doAfter) doAfter();
}
}
});
Как указано в других, вы не можете свою собственную библиотеку, если вы просто хотите, чтобы сделать диалог.
Хотите сделать это с 'подтвердите JavaScript()' (на основе браузера) или вы хотите использовать jQuery (dom-based)? Вы включили оба тега. – Mathletics
В javascript вы не останавливаетесь, пока ожидаете действия пользователя: вы устанавливаете обратный вызов (функцию), который ваш диалог вызывает при закрытии. Вы открываете диалоговую библиотеку, делая что-то вроде doDialog (название, контент, ответы, doOnClose). –
Вы хотите создать свой собственный? Это делают миллионы плагинов jQuery. Вы можете «блокировать» только путем наложения некоторого div на страницу. – Esailija