Ответ 1
Возможно ли создать специальное модальное сообщение, которое "блокирует" выполнение script до ввода пользователя?
Нет. Невозможно блокировать выполнение или взаимодействие с пользователем так же эффективно, как собственное всплывающее окно (поскольку с помощью пользовательских всплывающих окон пользователь всегда технически способен использовать инструменты разработчика, чтобы выйти из него).
Однако, как говорит pst в комментариях к вопросу, асинхронные лайтбоксы не являются обременительными и почти так же эффективны при блокировке взаимодействия с пользователем, как всплывающие окна, поэтому я рекомендую найти библиотеку, которая предоставляет лайтбоксы, которые вам нравятся, и работать с ними.
Например, как вы можете добиться этого, не используя функции оповещения/приглашения для собственного окна?
Вы не можете использовать этот код, чтобы делать то, что вы говорите, даже с помощью встроенных функций оповещения/приглашения на окно (см. эта скрипка - wait 4 секунды до закрытия всплывающего окна). Вам понадобится следующее:
function timeoutFunction() {
alert('Click OK to Continue'); // timing ACTUALLY stops until user hits ok
setTimeout(timeoutFunction, 4000);
}
setTimeout(timeoutFunction,4000);
Что вы не можете реализовать (точно - см. выше в лайтбоксах) без собственных всплывающих окон.
Даже циклы while(true)
обычно не блокируются, а всплывающее окно - firefox по крайней мере имеет сообщение "stop script", которое появляется после того, как оно слишком длинное, и я уверен, что другие основные браузеры тоже.