Java Servlets - Как определить, находится ли пользователь с мобильного устройства?
Я использую редактор javascript TinyMCE, и он не работает на iphone. Как я могу определить, поступает ли пользователь с мобильного устройства?
Java Servlets - Как определить, находится ли пользователь с мобильного устройства?
Я использую редактор javascript TinyMCE, и он не работает на iphone. Как я могу определить, поступает ли пользователь с мобильного устройства?
Я использую редактор javascript TinyMCE
Поскольку вы хотите изменить поведение на стороне клиента в зависимости от клиента, лучше всего обрабатывать его на стороне клиента, а не на стороне сервера.
В мире CSS вы можете подключить тип носителя для применения стилей в зависимости от используемого носителя. Наиболее часто используемые типы носителей - это экран (обычно ПК), карманный (обычно мобильный) и печать (для печатной страницы).
Вы можете использовать его, чтобы скрыть редактор только следующим правилом в вашем CSS:
@media handheld {
#elementIdContainingEditor { display: none; }
}
Вы даже можете указать отдельные таблицы стилей в зависимости от используемого носителя.
<link rel="stylesheet" href="default.css" media="screen">
<link rel="stylesheet" href="mobile.css" media="handheld">
Если проблема на самом деле больше не того, что она не работает, потому что JavaScript отключен на конкретном клиенте, тогда вам лучше выполнить конкретный CSS, когда JS отключен:
<noscript><style>#elementIdContainingEditor { display: none; }</style></noscript>
Или наоборот, сначала скройте его, а затем покажите, когда включена JS:
<script>document.getElementById('elementIdContainingEditor').style.display = 'block';</script>
Это более надежно, чем обнюхивание агента на стороне сервера.
Я использовал класс UAgentInfo.java, который вы можете скачать здесь (http://code.google.com/p/mobileesp/source/browse/Java/UAgentInfo.java):
private boolean isRequestComingFromAMobileDevice(final HttpServletRequest request){
// http://www.hand-interactive.com/m/resources/detect-mobile-java.htm
final String userAgent = request.getHeader("User-Agent");
final String httpAccept = request.getHeader("Accept");
final UAgentInfo detector = new UAgentInfo(userAgent, httpAccept);
return detector.detectMobileQuick();
}
В классе UAgentInfo есть множество методов для обнаружения определенных устройств. Просто замените detect.detectMobileQuick(), например, на детектор .detectIphoneOrIpod(), detector.detectKindle() и т.д.
UPDATE: если вы используете Spring, вместо этого вы можете использовать свою собственную реализацию. Вот пример: http://spring.io/guides/gs/device-detection/
Использование request.getHeader("User-Agent")
. Здесь - список мобильных браузеров и их соответствующих User-агентов.
Единственное, что отличается, это быть User-Agent. Поиск агентов пользователя для браузеров, которые вы хотите обнаружить. (Не знаете, почему вам будет интересно)
Вы также можете добавить javascript для запуска чего-либо в браузере?
Используйте User-Agent в заголовке HTTP-запроса.
request.getHeader("User-Agent")
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if(request.getHeader("User-Agent").indexOf("Mobi") != -1) {
} else {
}
}