Меня интересует, было ли это лучшим местом для обнаружения пользовательского агента клиента, клиентской стороны (javascript) или серверной стороны? Я поднял вопрос из-за того, что некоторые пользователи IE8 получают сообщение о том, что они используют IE6.Каков наилучший способ обнаружения пользовательского агента клиента?
ответ
Короткий и правильный ответ: не используйте ничего, что полагается на обнюхивание UserAgent.
Для надежной настройки путей кода вы должны проверить конкретную «вещь», для которой скопирована скобка, в первую очередь функции. Это называется Feature Detection.
Итак, если функция X поддерживается, мы делаем это, если не делаем этого.
Устранение, если функция поддерживается на основе того, какой пользователь присутствует, быстро сработает, особенно когда новые браузеры попадают на отмеченные.
Рассмотрим следующий пример, который на самом деле можно найти в нескольких крупных библиотек (!)
if (isIE8) {
// use new feature provided by IE8
} else if (isIE7) {
// use not so new feature provided by IE7 (and IE8)
} else {
// use fallback for all others (which also works in IE7 and IE8)
}
Что вы думаете, что происходит, когда IE9 приходит?
Правильный шаблон в этом случае будет
if ("addEventListener" in foo) {
// use DOM level 2 addEventListener to attach events
foo.addEventListener(...
} else if ("attachEvent" in foo) {
// use IE's proprietary attachEvent method
foo.attachEvent(...
} else {
// fall back to DOM 0
foo["on" + eventName] = ....
}
Тогда какой был бы лучший способ решить эту проблему? – westoque
em .. удалить? Код должен использовать функцию Detection, а не UserAgent Sniffing для адаптации своих кодовых файлов –
+1. Шон абсолютно прав. Статья Петра Мишо об обнаружении признаков - это хорошее место для начала: http://michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting –
Пользовательский агент, доступный с обеих сторон, должен быть таким же, если только не происходит забавный материал, который обычно не является.
Если вы хотите показать сообщение пользователям IE6, я предлагаю вам использовать conditionalcomments. Они являются особенностью, специфичной для IE, и очень хорошо работают для обнаружения версий IE.
+1 для использования условных комментариев для обнаружения версии IE. – Brian
Информация найдено через клиент или обнаружения на стороне сервера, в основном то же самое.
Помните, что очень просто подделать браузер, в котором вы находитесь. Нет надежного способа обнаружения всех типов браузеров.
я не знаю, как вы проверяете для агента пользователя, но я бы сделал так:
<%=
case request.env['HTTP_USER_AGENT']
when /Safari/
"it's a Mac!"
when /iPhone/
"it's a iPhone"
else
"i don't know :("
end
%>
проверки непосредственно в запросе пользователя, как представляется, наиболее последовательным способом проверить пользовательский браузер. И request.env доступен в вашем контроллере и представлениях, поэтому вы можете передать это rjs, если это необходимо.
Для тех, кто необходимости чтобы получить фактический агент пользователя с помощью JavaScript, вы можете использовать navigator.userAgent
- 1. Каков наилучший способ обнаружения столкновения?
- 2. Каков наилучший способ определения пользовательского агента iOS 7 Safari?
- 3. Самый быстрый способ обнаружения пользовательского агента
- 4. Каков наилучший способ обнаружения присутствия SMO?
- 5. Каков наилучший способ обнаружения нескольких нажатых кнопок.
- 6. Каков наилучший способ обнаружения удаленной записи?
- 7. Каков наилучший способ одновременного обнаружения нескольких BLE?
- 8. Каков наилучший способ реализации одномерного обнаружения столкновения?
- 9. Каков наилучший способ обнаружения атак веб-приложений?
- 10. Каков наилучший способ обнаружения браузера с php?
- 11. Каков наилучший способ обнаружения нажатия функциональной клавиши?
- 12. Каков наилучший способ обнаружения табличных структур данных?
- 13. Каков наилучший способ обнаружения поддержки websocket с помощью Javascript?
- 14. Каков наилучший способ запустить работу агента Sql с помощью C#?
- 15. Каков наилучший способ запуска exe клиента?
- 16. Каков наилучший способ реализации TCP-клиента python?
- 17. Каков наилучший способ загрузки пользовательского UIView?
- 18. Каков наилучший способ обнаружения копирования (Ctrl + C) в IWpfTextView?
- 19. Каков наилучший способ обнаружения завершения загрузки изображения - onload или addEventListener()?
- 20. Каков наилучший способ обнаружения знака STOP с помощью OpenCV?
- 21. Каков наилучший способ обнаружения всех способов закрытия формы?
- 22. Каков наилучший способ обнаружения внешних URL-адресов в рельсах?
- 23. Каков наилучший способ обнаружения интернет-соединения с помощью .NET?
- 24. Каков наилучший способ обнаружения Internet Explorer 6 с помощью JavaScript?
- 25. Cuckoo Hashing: Каков наилучший способ обнаружения столкновений в хэш-функциях?
- 26. Каков наилучший способ обнаружения и перенаправления мобильного браузера в AppEngine?
- 27. Каков наилучший способ обнаружения метки на изображении? OpenCV
- 28. Каков наилучший способ обнаружения фокуса в @contentChild в angular2?
- 29. Каков наилучший способ обнаружения примитива, хранящегося в объекте Java?
- 30. Обнаружение пользовательского агента iPad
тангенциально Родственное примечание: Агент пользователя говорит MSIE 7.0 вместо MSIE 8.0 при использовании в режиме совместимости IE8. – Brian