Перейти к содержимому


Окошко (модальное окно?) "Идет процесс/Завершен процесс"


  • Вы не можете ответить в тему
Сообщений в теме: 5

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 03 October 2012 - 08:57 PM

В ShopCMS при Аякс-корзине добавление товара в корзину вызывает появление в центре оранжевого квадратика с текстом типа "товар добавляется в корзину", затем "товар успешно добавлен". Т.е. перед выполнением аякс-запроса и после успешного выполнения выдаются окошки поверх основного содержимого экрана. Попытался разобраться и у меня сложилось впечатление, что разбираться-то до конца и не стоит, т.к. реализация - через попу. Отсюда вопрос - есть ли более удобные реализации этих двух (трех учитывая ошибочное) сообщений, сопутствующих аякс-запросу?

Я пока самое удобное, что нашел - blockUI - довесок к JQuery - с его

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

. Удобно, красиво, но вдруг можно как-то проще? Или чуть сложнее, но без подгрузки дополнительных библиотек. По хорошему, меня бы устроила JS-функция, которая вываливает на экран блочок с сообщением а-ля alert(), но без кнопки продолжения "Ок". Т.е. время висения на экране (и блокировки браузера) определяется другой JS-функцией. Типа SetTimeout или явно снимающей это окошечко, ведь у $ajax есть параметры "функция выполняемая до запроса", "после удачного выполнения", "после неудачного".

Или что-то типа hover(), где при вызовах выполняется по очереди первая-вторая описанная функция.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 03 October 2012 - 10:37 PM

блокировкау браузера может исполнить только служебное событие, которое обрабатывается браузером (например: alert), функции не могут блокировать браузер.

советую почитать про
async:false

и в плане висения, какие проблемы при старте функции делать видимым 100% div с прозрачностью (opacity)
  • 0
Изображение Изображение Изображение

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 04 October 2012 - 09:07 AM

блокировкау браузера может исполнить только служебное событие, которое обрабатывается браузером (например: alert), функции не могут блокировать браузер.

Ну, значит служебное событие :). С точки зрения синтаксиса разве есть разница между служебным событием alert() и функцией alert()? Аналогично и с AjaxStart, AjaxStop.

советую почитать про async:false

Это я знаю. Видимо, я неправильно расставил акценты. Главная задача не в блокировке, а одной функцией сделать окошко с надписью видимым, а другой - убрать окошко. Типа, wnum=alert_on('text') выводит окошко, а alert_off(wnum) его убирает. Без кнопки "Ок". Вот в BlockUI есть похожие функции, но они же на чем-то основаны.

и в плане висения, какие проблемы при старте функции делать видимым 100% div с прозрачностью (opacity)

Да, так сделано при добавлении в корзину. Просто мне не понравилось сама идея присутствия в HTML-коде невидимых элементов. Хотя, возможно, это наименьшее из зол. JS ведь тоже будет "присутствовать в HTML-коде", да и всяких input-hidden там полно :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 04 October 2012 - 10:00 AM

Ну, значит служебное событие . С точки зрения синтаксиса разве есть разница между служебным событием alert() и функцией alert()? Аналогично и с AjaxStart, AjaxStop.

разницы нет, я имел ввиду что только браузер может заблокировать своё выполнение при вызове определенных команд :)

Вот в BlockUI есть похожие функции, но они же на чем-то основаны.

насколько видно по BlockUI, они все основаны на том, что элемент или страница перекрывается div-ом с прозрачностью, который просто стоит поверх всего и не дает кликать по элементам
  • 0
Изображение Изображение Изображение

#5 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 04 October 2012 - 01:06 PM

У себя на сайте все уведомления я переделал под этот jq плагин, легкий и понятный

http://sofcase.net/p...s-hintmessages/

сообщение добавления в корзину в итоге формируется по типу
$.jmessage('Товар успешно добавлен!', '', 2000, 'jm_message_success');   (2000 - таймаут)

  • 0
502 Bad Gateway

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 04 October 2012 - 04:28 PM

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

PS. Большая часть затраченного времени - нахождение ошибки в примере, который "точно работает, я проверял", где человек написал GetElemetByID вместо GetElementById. Поубивал бы :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)