Определить, поддерживает ли браузер JavaScript или ajax в Wicket?
В Wicket встроено множество резервных компонентов Ajax, которые переходят на обычный запрос, если ajax недоступен или Javascript отключен. Несколько хороших примеров: AjaxFallbackButton, AjaxFallbackLink и т. Д.
Note
Однако есть некоторые компоненты, в которых не реализовано резервное поведение, например, AjaxLazyLoadPanel, он будет постоянно отображать изображение по умолчанию Wicket, если отключен JavaScript.
Решение
На самом деле, в Wicket есть встроенный механизм для определения, поддерживает ли браузер JavaScript. Но Wicket отключает эту функцию по умолчанию по причине.
1. Соберите информацию вашего браузера
В приложении Wicket заменитеinit()
наsetGatherExtendedBrowserInfo(true), это даст Wicket команду собрать дополнительную информацию из вашего браузера.
protected void init() { getRequestCycleSettings().setGatherExtendedBrowserInfo(true); }
2. Определить JavaScript
Теперь вы можете определить, поддерживает ли браузер JavaScript следующим образом:
WebClientInfo clientInfo = (WebClientInfo)WebRequestCycle.get().getClientInfo(); if(clientInfo.getProperties().isJavaEnabled()){ //Javascript is enable }else{ //Javascript is enable }
объяснение
Когда пользователь запрашивает страницу, Wicket выполнит простое тестирование перенаправления JavaScript в клиентском браузере, чтобы проверить, поддерживается ли JavaScript в браузере, и сохранит его в сеансе пользователя. После выполнения теста перенаправления Wicket перенаправит на исходную запрашиваемую страницу. Весь процесс очень быстрый, но вы увидите вспышку пустой страницы. Вот почему Wicket отключает его по умолчанию. Вспышка черной страницы действительно раздражает, когда вы видите этот вид флэш-страницы, вы можете предположить, что этот сайт является фишинговым сайтом :), так же как и ваш клиент.
Страница тестирования перенаправления калитки является универсальной и пригодной во всех случаях, однако использование пустой страницы действительно неприемлемо, по крайней мере, для меня.