При использовании предупреждения или подтверждения в Javascript браузер принудительно переходит в синхронный процесс, в котором все (даже загрузка другой страницы) останавливается, пока пользователь не закроет диалоговое окно.

Мне было интересно, есть ли другой способ заставить браузер останавливаться / приостанавливаться с помощью JS или jQuery.

Я посмотрел на похожие вопросы, например:

Как заставить функцию JavaScript выполняться синхронно / последовательно?

Как заставить диалоговое окно jQuery ui останавливать обработку браузера, например, окно предупреждения или подтверждения?

Получение синхронного поведения в JavaScript?

... но, похоже, ни один из ответов не решает проблему. Если нет способа сделать это, я полностью приму это как ответ.

3
Maxx 13 Фев 2013 в 19:35
1
Я думаю, вы имеете в виду «модальный», а не «синхронный». Однако я думаю, вам нужно немного подробнее объяснить вашу проблему. Почему вы хотите предотвратить взаимодействие пользователя со страницей? Вы используете настраиваемый диалог или что-то в этом роде?
 – 
RB.
13 Фев 2013 в 19:37
3
Невозможно сделать это в современном браузере, не вызывая диалогового окна «остановить этот скрипт».
 – 
Kevin B
13 Фев 2013 в 19:37
2
Зачем тебе вообще это нужно? Приведите нам пример того, как вы собираетесь использовать это, и это станет немного проще!
 – 
adeneo
13 Фев 2013 в 19:37
2
Интересно, почему, когда так много разработчиков работали над способами ОСТАНОВИТЬ JavaScript от зависания браузера, новые разработчики все еще спрашивают нас о способах «включить» это снова.
 – 
Blazemonger
13 Фев 2013 в 19:40
1
На самом деле, даже alert() не останавливает все
 – 
Bergi
13 Фев 2013 в 19:42

1 ответ

Лучший ответ

Нет, в настоящее время нет кроссбраузерного способа заставить асинхронную функцию выполняться синхронно.

Однако вы можете использовать продолжения для синхронного написания асинхронного кода.

Подробнее читайте в следующем ответе: https://stackoverflow.com/a/14809354/783743

2
Community 23 Май 2017 в 15:06
Что такое асинхронная функция в JavaScript?
 – 
TomTom
13 Фев 2013 в 19:42
Ответьте, пожалуйста, потому что я не думаю, что есть такое. Хотя некоторые вызывают использование setTimeout (), чтобы сделать функцию асинхронной.
 – 
TomTom
13 Фев 2013 в 19:45
3
- Функции JavaScript, которые не выполняются в логическом порядке, являются асинхронными. Например, вызовы AJAX обычно являются асинхронными, поскольку они возвращаются немедленно, а не блокируют цикл событий до тех пор, пока не будет получен ответ.
 – 
Aadit M Shah
13 Фев 2013 в 19:47
Использование AJAX можно назвать асинхронным, но функции в JavaScript являются объектами, и, насколько мне известно, нет способа определить функцию асинхронной или синхронной.
 – 
TomTom
13 Фев 2013 в 19:49
1
Функции Javascript синхронны. Они могут содержать асинхронные вызовы, такие как вызовы Ajax, но это не делает их асинхронными.
 – 
Reinstate Monica Cellio
13 Фев 2013 в 19:49