Я пытаюсь переопределить стандартный метод confirm()
в Javascript (сделайте приятный интерфейс и прочее). Я прочитал 100 сообщений о том, что это «невозможно сделать», но я не хочу сдаваться, пока не дал ему справедливый снимок. :)Какие методы блокируются в Javascript?
Итак, реальная проблема заключается в том, что метод confirm()
должен блокировать все выполнение javascript до тех пор, пока пользователь не выберет опцию. Итак, каковы методы в Javascript, которые блокируют поведение? Я был в состоянии придумать 5:
alert()
- меня не устраивает, поскольку он отображает нежелательную интерфейс своей собственной;confirm()
- та же проблема, что иalert()
;- бесконечная петля - даже современные браузеры будут убирать процессор, как сумасшедший, и отображать «стоп-javascript»? через несколько секунд;
XmlHttpRequest
в синхронном режиме - своего рода, но она включает в себя сервер ...showModalDialog()
- хороший, но мне нужен специфический дизайн, плюс есть некоторые требования совместимости браузера ...
Лучший Мне до сих пор нужно создать с приглашением (которое затем получает собственный поток выполнения javascript) и блокировать с XmlHttpRequest
, пока пользователь не выбрал опцию в . К сожалению, это связано с передачей результата вперед и назад между сервером, и я бы хотел сделать эту клиентскую часть на 100%. Кроме того, он связывает поток сервера при открытии диалога, и могут быть некоторые зависящие от браузера аякс-тайм-ауты, которые применяются.
Может ли кто-нибудь подумать о любых других методах Javascript, которые блокируют выполнение, которое может быть (ab) использовано для достижения желаемого эффекта?
Проблема на самом деле не блокируется, поскольку это можно сделать с помощью цикла while или чего-то подобного, но как вы собираетесь создавать диалог, который требует javascript, когда пользователь отвечает, но в то же время блокирует выполнение javascript ,Лучшим подходом было бы создание обратного вызова в вашем настраиваемом диалоговом окне, а затем выполнение остальной части кода в обратном вызове вместо того, чтобы полагаться на блокировку. – adeneo
Просто переключитесь с линейного кода на html popup и callback design, просто, сделал это несколько раз. – yent
@adeneo - да, это будет * наилучшим образом, если бы не было кучи кода, который теперь должен быть преобразован, включая стороннюю библиотеку. Что касается блокировки, но не-блокировки - это в любом случае разрешено '