Возможно ли имитировать заблокированный диалог, например, window.confirm () '? [дублировать

StackOverflow https://stackoverflow.com/questions/6805982

Вопрос

Я хочу симулировать диалог блока как window.alert(), window.confirm(), или же window.prompt() с Div+javascript. Анкет Кажется легко использовать Функция обратного вызова. Анкет Но я хочу заблокировать процесс, пока показан диалог подтверждения.

То есть я хочу определить функцию, подобную:

var Alert = function(){ balabala };

который возвращается true или же false После того, как я нажимаю OK или отменил.

РЕДАКТИРОВАТЬ:

Пока я определил функцию, называемую Confirm() И теперь я должен назвать это как

Confirm(*callback*);

И в реализации я показываю диалог, подобный подтверждению, и когда нажимается OK, будет выполнен обратный вызов. Интересно, можно ли переписать это, чтобы я мог назвать это как

if(Confirm()) {
    callback(); 
} else {
    balabala;
}
Это было полезно?

Решение

Вы не можете блокировать пользователя от использования своего браузера, т.е. переключения вкладки и делать другие вещи на них, прежде чем он вернется к вашему, как alert() звонок делает. Но ты Можно Заблокируйте их от использования чего -либо на вашей странице, пока они не ответят на вопрос. Вы можете просто заполнить все тело абсолютным расположенным дивизоном, у которого есть z-index больше, чем остальная часть вашей страницы, и дайте всплывающему всему z-index один выше, чем это и сосредоточить его.

Конечно, пользователь все еще может использовать такие вещи, как инструменты разработчика Chrome или Firebug, чтобы удалить ваш блокирующий Div, так что это не безопасная вещь.

Редактировать Я неправильно прочитал ваш вопрос. Вы не заботитесь о визуальной блокировании страницы, но хотите сделать возвратную ценность всплывающего окна синхронизированным с остальной частью вашего сценария, а не асинхронным с обратным вызовом. Я не уверен, как это сделать.

Может быть, это будет полезно для вас: https://developer.mozilla.org/en/code_snippets/threads#waiting_for_a_background_task_to_complete

Другие советы

К сожалению, нет никакого способа имитировать синхронные кодовые вызовы с помощью JavaScript. Вы можете создавать чистые диалоги на основе DOM, но для того, чтобы выполнить код, когда они закрываются, вам нужно принять обратный вызов или вернуть обещание. К сожалению, это не делает для самого чистого кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top