Window Navigator

Window Navigator – Informationen über den Browser

navigator liefert Informationen über den Browser wie die Geolocation als Latitude und Longitude, mit cookieEnabled ob Cookies beim Besucher aktiviert sind oder nicht, ob die Seite online besucht wird oder im Cache liegt, die eingestellte Sprache mit language und Informationen zum Browser selbst.

Was auf dem ersten Blick aussieht, als wäre es eine Hilfe beim Erkennen des Browsers, enthält keine zuverlässigen Informationen.

18-12-15 SITEMAP CSS HTML JS Basis JS Web Tutorial SVG

Browser-Namen

Verschiedene Browser können nahezu identische Namen anzeigen, einige Browser identifizieren sich nicht, um Tests zu entgehen oder die Statistik aufzumischen und die Version des Betriebssystems hinkt häufig hinterher.

Wer mit Javascript den Browser des Nutzers ermitteln will, darf sich auf die Informationen aus dem Navigator-Objekt nicht verlassen. Aber meistens wollen wir auch gar nicht wissen, welcher Browser anliegt, sondern ob der aktuelle Browser bestimmte Eigenschaften unterstützt: Feature Detection.

Seit geraumer Zeit ist Feature-Detection mit Modernizr die zuverlässige Quelle No 1. In Zukunft führt die Abfrage der vom Browser unterstützten Eigenschaften vorzugsweise über die CSS @supports-Regel.

Die CSS supports-Regel ist nicht auf die Anwendung im CSS beschränkt, sondern Javascript hat ein elegantes Äquivalent

if (CSS.supports("display", "flex")) { 
 …
}


			

CSS.supports wird von allen modernen Browsern unterstützt, aber nicht von IE bis einschließlich IE11.

Feature Detection

Auf der Basis von eigenen Tests kann Javascript Browsern mit speziellen Eigenschaften Extras anbieten. So werden ältere Browser nicht durch Fehler blockiert oder die Eigenschaften können durch ein Polyfill nachgerüstet werden .

if("geolocation" in navigator) {
   navigator.geolocation.getCurrentPosition(function(position) {
      …
}) } else {
      …
}

window.navigator

window.navigator kann mit oder ohne den Präfix window geschrieben werden.

Die Angaben aus dem navigator-Objekt sind »read only« – können nur gelesen werden.

Wenn doch einmal alle Browser so harmonisch wirken würden wie beim appCodeName! Ob IE, Opera, Safari oder Firefox: appCodeName ist immer Mozilla im stillen Gedenken an den Urvater aller grafischen Browser.

Wie zuverlässig ist navigator.platform? Mein iPad zeigt unter navigator.platform tatsächlich iPad an, das iPhone aber MacIntel und selbst auf einem Apple M1 zeigt Chrome MacIntel. Chrome und auch der Samsung-Browser auf dem Android-Handy zeigen Linux armv8l.

navigator.platform / Gerät zuverlässig erkennen?

Lassen sich mobile Geräte zuverlässig entdecken? navigator.platform reicht nicht aus. Die folgende Funktion fragt zusätzlich nach Touch-Support.

function iOS() {
  return [
    'iPad Simulator',
    'iPhone Simulator',
    'iPod Simulator',
    'iPad',
    'iPhone',
    'iPod'
  ].includes(navigator.platform) || (navigator.userAgent.includes("Mac") && "ontouchend" in document)
}

if (iOS()) {
	console.log ("IOS iPad oder iPhone")
} else {
	console.log ("Nichts davon")
}

Eine Eigenschaft von navigator.platform ist standalone. Das trifft nur zu, wenn Seiten als Progressive Web App installiert sind und im Fullscreen-Modus laufen. Nichts desto Trotz – ein nicht wirklich zuverlässiges Verfahren und entdeckt iPhone und iPad erst ab iOS 13.

Eigenschaften / Methoden von von window.navigator

appCodeName

Der Code-Name des Browsers. So ziemlich alle Browser nennen sich „Mozilla“

appName

Der einfache Name des Browsers – liefert Netscape für IE11, Chrome, Safari, Firefox

appVersion

Die Versionsnummer und weitere Versionsinformationen über den Browser – alle mehr oder weniger zu nichts nützlich.

battery

Batterie-Status (Ladezustand) des Geräts

cookieEnabled

gibt zurück, ob Cookies im Browser aktiviert oder ausgeschaltet sind.

geolocation

navigator.geolocation.getCurrentPosition gibt den Standort zurück, wenn der Benutzer den Zugriff ausdrücklich erlaubt:
coords.latitude
coords.longitude
coords.altitude
coords.accuracy
coords.altitudeAccuracy
coords.heading Grad Abweichung von Nord
coords.speed Meter pro Sekunden
timestamp ein Date-Objekt

language

Sprache des Browsers

mimeTypes

gibt ein Array mit den Dateitypen zurück, die vom Browser unterstützt werden.

onLine

Gibt zurück, ob die Seite online oder aus dem Cache des Browsers aufgerufen wird – wichtige Frage in Anwendungen, die mit dem Manifest arbeiten.

platform

Die Hardware-Plattform. Erscheint z.B. als Win32 or MacPPC und beinhaltet keinen Hinweis auf die Version des Betriebssystems.

plugins

Sammlung der im Browser installierten Plugins

product

Produktname der Browser-Engine

storage

Gibt ein StorageManager-Objekt zurück – gedacht für die Verwaltung des verfügbaren Speichers.

userAgent

Ein String mit der Versionsnummer, dem Betriebssystem und – außer bei Internet Explorer – die vorgegebene Sprache des Browsers

javaEnabled()

Java (nicht Javascript!) im Browser aktiviert?