Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   ожидание дейс (https://javascript.ru/forum/jquery/60164-ozhidanie-dejjs.html)

Frozen Coyote 14.12.2015 19:16

Возврат из функции только после действия пользовтеля
 
Друзья, прошу помощи. у меня уже мозг свернулся :(

пытаюсь сделать свой конфирм, всякие плагины отметаю за нежеланием их использовать, есть причины. смотрите, вот есть линк:

<a href="javascript:void(0);" onclick="if(doConfirm('Подтверждаете?')){ alert('1'); } else {alert(':(')} ">x</a>


внутри моей функции doConfirm я планирую создавать окошко с кнопочками, ДА - НЕТ, по нажатию на "ДА" - возвращаться должен true, на "НЕТ" - false, соответственно мне необходимо чтобы моя функция doConfirm вверглась в режим ожидания, а не прыгала сразу на ветку else {alert(':(')} как в этом случае. Ну и конечно, чтобы какой то ужасный while не вывешивал наглухо браузер. Наверно, как то надо через setTimeout/setInterval и даже допускаю что что поможет deffered / promise - но никак не могу увязать все воедино - получается барахло какое то кривое. Подскажите пожалуйста, как мне удержать мою функцию от немедленного ретурна и заставить ее ожидать какое то действие пользователя?

заранее спасибо

krasovsky 15.12.2015 08:17

Цитата:

Сообщение от Frozen Coyote
пытаюсь сделать свой конфирм, всякие плагины отметаю за нежеланием их использовать

либо по простому - используй стандартный confirm.
Если не нравится, используй promise(ограничения по поддержке браузерами), либо подключай либу которая предоставляет кроссбраузерный доступ к такому типу объектов
И покажи код. Если использовать тот же setinterval это коненчно, по деревенски, но зато ничего сложного не вижу - чувак жмет кнопку, ты по онклику записываешь в некую переменную true или false, а интервал ждет пока там что то появится, выполняет некую функцию, и все.

Deff 15.12.2015 09:45

Frozen Coyote,
Ну есть пару вопросов:
1. Во время Высплытия Вашего Окошка юзер может что нибудь делать в этой вкладке браузера, кроме ответа на вопрос ?
2. Кто мешает повесить онклик на кнопки ДА-Нет ?
И дальнейший ход действий воткнуть в обработку этих событий. Т.е никаких циклов опроса кнопок и зависов браузера нет.
3. Если действий пользователя не намечается(кроме кликов по кнопкам), типично вместе с окном с кнопками загораживаем окно window полупрозрачным дивом с позицией fixed и размерами 100% Х 100%


Часовой пояс GMT +3, время: 01:42.