Я знаю, что есть тысячи вопросов о переполнении стека об обнаружении браузера с помощью JavaScript. Мой вопрос: как вы можете обнаружить браузер без window.navigator
(который включает navigator.userAgent
)?
Во-первых, чтобы уточнить, мне не нужно знать механизм рендеринга, это не для адаптивного макета, и не паникуйте: я уже делаю обнаружение функции. Если почему я спрашиваю об обнаружении браузера, важно прокомментировать, и я буду рад спланировать объяснение, но это, вероятно, сделает вопрос вопиющим долго.
Далее, позвольте мне объяснить, почему мой вопрос не является дубликатом:
-
Обнаружение браузера в Javascript? , потому что ответов 19, 12 из них используют
navigator.userAgent
специально (в том числеjQuery.browser
, который использовал userAgent, и теперь он ушел), 4 использоватьnavigator.appName
(который дает "Netscape" в Chrome...) 1 ставит вопрос, рекомендуя определение функции, которое отличается от обнаружения браузера (я уже использую обнаружение функции, но чтобы узнать, в какой степени я могу их использовать, мне нужно обнаружение браузера) и 2 не являются действительно ответами или специфичны для IE. (Хотя этот не-ответ на самом деле очень объясняет, почему мой вопрос здесь уместен: я стараюсь избегать попадания болевых точек на определенные браузеры, которые могли бы сбить вкладку! ) Поскольку мой вопрос требует ответа (даже взлома?) Без использованияwindow.navigator
, это не дубликат этого вопроса. -
Проверьте, использует ли пользователь IE , потому что из 11 ответов, 10 используют
navigator.userAgent
, а 1 из них использует IE трюк для обнаружения только IE, чего недостаточно для ответа на мой вопрос (хотя, возможно, это может быть небольшая часть полезного решения, размещенного здесь)? -
В Javascript, как определить, является ли мой текущий браузер Firefox на компьютере, а не на все остальное? , потому что из 11 ответы, 8 use
navigator.userAgent
, 2 рекомендую обнаружение функции (опять же, не мой вопрос), и 1 даже не является ответом. -
Как определить браузер хрома и сафари (webkit) , потому что из 8 ответов, 6 из них используют
navigator.userAgent
, и 2 являются специфичными для webkit. К сожалению, WebKit не обязательно привязан к Safari, и мне нужно знать браузер, а не механизм рендеринга.
Надеюсь, это кристально ясно.
Я знаю, что есть другие способы сделать это, но я не знаю, насколько хорошо все в порядке. Может быть, объекты или переменные, которые последовательно или надежно подвержены JavaScript в некоторых браузерах? Я знаю, что некоторые экспериментальные API-интерфейсы являются префиксами для поставщиков, но это не похоже на хорошую идею для использования в коммерческом продукте, хотя я желаю опуститься до минимума, если это необходимо. Любые другие возможности?