Возможно ли имитировать заблокированный диалог, например, window.confirm () '? [дублировать
-
25-10-2019 - |
Вопрос
Этот вопрос уже имеет ответ здесь:
Я хочу симулировать диалог блока как 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, но для того, чтобы выполнить код, когда они закрываются, вам нужно принять обратный вызов или вернуть обещание. К сожалению, это не делает для самого чистого кода.