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

Какое отношение они имеют к старому браузеру Netscape? Может ли это быть из-за DOM0?

48
C graphics 29 Янв 2013 в 04:48

4 ответа

Лучший ответ

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

См. Mozilla документацию здесь. ,

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

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

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

42
Onur Yıldırım 19 Фев 2016 в 18:45

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

< EM> Update Хотя этот ответ уже устарел, вот ссылка на приведенное выше утверждение: https://docs.microsoft.com/en-us /previous-versions/windows/internet-explorer/ie-developer/dev-guides/bg182625(v=vs.85)?redirectedfrom=MSDN#legacy-api-additions-changes-and-removals

3
magikMaker 13 Янв 2020 в 16:50

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

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

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

7
enginefree 29 Янв 2013 в 01:06

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

0
Adam R. Turner 12 Дек 2018 в 15:34