Есть ли способ намеренно заморозить окно браузера, как это делают alert
, confirm
и prompt
(короче: "acp")?
Я хочу показать модальное диалоговое окно с пользовательскимcss вместо нативных всплывающих окон для «acp», но также хочу иметь возможность заморозить браузер, пока у меня не появятся отзывы пользователей, такие как «acp».
Но человек, почему?Это плохая практика (э-э, я должен понизить голос)!
Итак, когда это плохая практика - тогда почему «acp» фактически предлагает такое синхронное поведение? Потому что в некоторых конкретных сценариях это как раз правильный инструмент для соответствующего UX. Эти нативные модалы выглядят так некрасиво и в то же время очень ограничены.
Вот только один быстрый игрязный пример, где было бы совершенно нормально заморозить браузер, пока пользователь не даст отзыв.Допустим, у нас есть form
с input type="reset"
-элементом.Поэтому, прежде чем мы действительно позволим сбросить form
, мы спрашиваем пользователя что-то вроде: «Вы уверены, что хотите сбросить (данные будут потеряны)?».
Если бы я был в порядке с собственным модальным внешним видом(что я не) я мог бы сделать:
var handleSubmit = function( e ) {
confirm('Are you sure you want to reset (data will be lost)?') || e.preventDefault()
}
$('form').on( 'reset', handleSubmit ) // just using jQuery here for the sake of shortness
// Edit to make Herohtar hopefully feel much better:
// using jQuery here for the sake of lazyness :)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input placeholder="type something, reset and cancel to keep input value" style="width:100%">
<input type="reset">
</form>
Так что «все» должны согласиться (отредактируйте: или, по крайней мере, кто-то мог), это неплохая практика, верно?
Но как мы можем достичьто же самое с пользовательским стилем модал / диалоговое окно / всплывающее окно?
Я, конечно же, прошу не часть HTML
/ CSS
, а возможность заморозить окно браузера через JavaScript!
Честно говоря, я действительно ожидаю некоторых отрицательных ответов за это, но, возможно, есть один Убийца ниндзя JavaScript , у которого есть этот специальный взлом, чтобы сделать возможным ...
ПРИМЕЧАНИЕ. Я точно знаю, как добиться того же результата в конце, но мне нужна реальная функция заморозки / синхронного воспроизведения, чтобы код был прямым и менее хакерским.