Подтвердить что ты не робот

Почему JavaScript navigator.appName возвращает Netscape для Safari, Firefox и Chrome?

Почему navigator.appName возвращает "Netscape" для Safari, Firefox и Chrome?

Что они должны делать со старым браузером Netscape? Может быть, из-за DOM0?

4b9b3361

Ответ 1

Да и это для проблем совместимости, и на них не следует полагаться.
MDN говорит: "Это изначально было частью DOM Level 0, но с тех пор было включено в спецификацию HTML5".

Смотрите Документация Mozilla здесь.

КСТАТИ; поэтому это невозможно использовать для обнаружения браузера. Обнаружение браузера - это БЕСПЛАТНАЯ практика, и вы всегда должны избегать ее там, где это возможно. Сделайте обнаружение функции. Но если кто-то настаивает на этом; они должны использовать свойство userAgent.

ОБНОВЛЕНИЕ 1: согласно Изменения совместимости; IE11 теперь также возвращает свойство "Netscape" для navigator.appName, чтобы отразить стандарт HTML5 и сопоставить поведение других браузеров. Также см. Изменения в userAgent string здесь... Подробнее об обнаружении функции здесь...

ОБНОВЛЕНИЕ 2: Microsoft Edge также возвращает "Netscape" для navigator.appName.

Ответ 2

На основании поста Джонни Стенбека:

Это обсуждалось в новостных группах mozilla много лет назад, и было решено что navigator.appName должен вернуть "Netscape" даже в mozilla, поскольку если это будет изменено на каждую страницу в Интернете, которая использует некоторые браузерный нюхательный код (и что ОГРОМНАЯ часть текущей сети) нужно было бы признать мозилла, и этого просто не произойдет, и нет никаких оснований делать это либо с mozilla == netscape == mozilla, поскольку разработчики контента согласны.

Источник здесь.

Ответ 3

Начиная с IE11, Explorer также будет возвращать "Netscape" при вызове navigator.appName;

Ответ 4

Теперь можно просто найти навигатор.userAgent для определения браузера для IE 11 и найти его механизм компоновки. По моему опыту, это работает довольно хорошо. Смотрите этот пост.