it-swarm.com.de

Warum gibt JavaScript navigator.appName Netscape für Safari, Firefox und Chrome zurück?

Warum gibt navigator.appName "Netscape" für Safari, Firefox und Chrome zurück?

Was haben sie mit dem alten Browser Netscape zu tun? Könnte es wegen DOM0 sein?

42
C graphics

Ja und das ist für Kompatibilitätsprobleme und nicht auf die man sich verlassen kann.
MDN sagt: "Dies war ursprünglich Teil von DOM Level 0, ist aber seitdem in der HTML5-Spezifikation enthalten."

Siehe Mozilla Dokumentation hier .

BTW; Deshalb kann dies nicht zur Browsererkennung verwendet werden. Die Browsererkennung ist eine schlechte Praxis und sollte möglichst immer vermieden werden. Führen Sie stattdessen Feature-Erkennung aus. Aber wenn jemand darauf besteht; Sie sollten stattdessen die userAgent-Eigenschaft verwenden.

UPDATE 1: Gemäß Kompatibilitätsänderungen ; IE11 gibt jetzt auch "Netscape" für die navigator.appName-Eigenschaft zurück, um den HTML5-Standard wiederzugeben und das Verhalten anderer Browser abzustimmen. Siehe auch Änderungen in userAgent string here ... Mehr zur Funktionserkennung hier ...

UPDATE 2: Microsoft Edge gibt auch "Netscape" für navigator.appName zurück.

42

Basierend auf dem Beitrag von Johnny Stenback: 

Dies wurde vor Jahren in den Mozilla-Newsgroups diskutiert und es wurde entschieden. Dieser navigator.appName sollte 'Netscape' auch in Mozilla seit .__ zurückgeben. Wenn dies geändert werden sollte, wird jede Seite im Web, die einige .__ verwendet, geändert. Browser-Sniffing-Code (und das ist ein RIESIGER Teil des aktuellen Webs) müsste Mozilla erkennen, und das passiert einfach nicht und Es gibt auch keinen Grund, dies zu tun, da Mozilla == Netscape == Mozilla, soweit Content-Entwickler betroffen sind.

Quelle hier

7
enginefree

Ab IE11 gibt der Explorer beim Aufruf von navigator.appName jetzt auch "Netscape" zurück.

4
magikMaker

Man kann jetzt im navigator.userAgent nach Browsererkennung nach IE 11 suchen und nach dessen Layout-Engine suchen. Nach meiner Erfahrung funktioniert es ziemlich gut. Siehe diese post .

0
Adam R. Turner