Потому что в отличие от многих браузеров, Firefox может позволить нить JavaScript запустить другой код, в то время как alert
, prompt
и confirm
модальности показывают, подвешивания текущего кода. (См. Конец ответа для получения дополнительной информации о «may» в этом предложении.) Задача, в которой вызывался alert
и т. Д., Приостанавливается, поэтому код в этой задаче не выполняется, но другие задачи могут запускаться ,
Это означает, что
Там никогда JavaScript работает одновременно в двух местах, но Firefox позволяет потоку запускать другие задачи, пока задача приостанавливается этими модалами.
Это привидение в Firefox. Я впервые узнал об этом прямо здесь, в Stack Overflow, thanks to bobince.
Почему я сказал «может» позволить поток JavaScript для запуска: Раньше было достаточно надежным (olders версии Firefox). Мне нечего было реплицировать на Firefox 29 или 38. Firefox 42, похоже, делает его гораздо менее вероятным, но он делает все еще случается.
Я бы ожидал (хотя я мог ошибаться), что Mozilla изменит это соответствие с другими браузерами, так как можно утверждать, что это нарушает семантику выполнения задач JavaScript для выполнения задач, и эти семантики просто усиливаются и уточняется по последней спецификации.
Я ждал 30 секунд, но все же он показывает 0. Не говорите мне сейчас, это должно быть только 5 секунд. : P – rajuGT
Я думаю, вопрос в том, почему закончился тайм-аут * до того, как цикл событий «щелчок» будет завершен *. – Pointy