Wicket ModalWindow: щелкните за пределами модального окна, чтобы закрыть
-
27-10-2019 - |
Вопрос
Мне нужно добавить поведение в ModalWindow
, чтобы, когда пользователь щелкает мышью за пределами модального окна, при соблюдении определенного условия (проверено на стороне сервера в моем методе respond()
) модальное окно отклоняется.
Я попытался реализовать что-то на основе этого ответа .Проблема в том, что я не могу прикрепить прослушиватель кликов к div модального окна, потому что он не добавляется в DOM до тех пор, пока модальное окно не будет показано (в этом примере к самому документу прикрепляется код keyup
).
Я подумал о расширении ModalWindow
и добавлении JS через getShowJavascript()
, но тогда у меня нет никаких средств, чтобы подключить его к методу AbstractDefaultAjaxBehavior.respond()
для теста.
Решение
Я решил это, добавив поведение не к модальному, а к виджету, который я добавляю к модальному с помощью ModalWindow.setContent()
.Когда мой виджет добавляется в модальное окно, div маски присутствует в DOM, и я могу успешно прикрепить обработчик кликов.
А именно:
родовое словоОбратите внимание, что я несколько сомнительно зависим от маски модального окна, имеющей класс с именем "wicket-mask-dark";это может быть не так, если вы измените настройки CSS, используемые генератором кода.