2016-04-07 6 views
0

Ich weiß, das ist schlechte Praxis und Feature-Erkennung sollte der Weg sein, in Bezug auf den Aufbau der Website zu gehen. Das ist jedoch nicht mein Anwendungsfall.Wie kann ich die Client-Seite des Benutzers Browser erkennen?

Ich habe verschiedene Distributionen meiner Browser-Erweiterung und ich möchte den Download-Button basierend auf ihrem aktuellen Browser ändern.

Ich habe versucht mit navigator.userAgent, das hat sich als ziemlich nutzlos erwiesen, da die meisten Browser alle gängigen Benutzer-Agenten eingestellt haben. Zum Beispiel hat Chrom dies.

navigator.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36" 

Ich habe gesehen, dass viele Websites diese Funktion auf ihren Download-Schaltflächen haben. Wie wird das richtig gemacht?

EDIT: Ich habe jetzt die Geschichte, warum "Mozzila/X.X" ist am Anfang der UserAgent Zeichenfolge gelernt. Entschuldigung für das Missverständnis.

+0

Wie ist es nutzlos? Chrome sagt "Chrome" ... userAgents sind genug, Sie müssen nur genau aufpassen. – dandavis

+0

sie könnten klarer sein, ich gebe es zu. Der häufigste Fehler ist "Safari" und "Chrome". Wenn es "Chrome" hat, ist es keine Safari, stellen Sie sicher, dass Sie damit umgehen und der Rest ist halb leicht. – dandavis

+0

@dandavis, ich nahm an, Mozilla bedeutete Firefox. Jetzt sehe ich, dass es nicht ist. – peso

Antwort

1

Sie können Browser auf verschiedene Arten erkennen.

Für Chrome außer Herstellung einer regex auf dem navigator.userAgent:

var isChrome = /Chrome/.test(navigator.userAgent); 

Sie können auch einen Scheck machen auf:

var isChrome = !!window.chrome && !!window.chrome.webstore; 

Ich schlage vor, Sie this answer für weitere Details zu sehen.

Sie sollten auch die Verwendung von Modernizr.js für die Browsererkennung in Betracht ziehen.

+0

diese akzeptierte Antwort ist schrecklich ... es ist Browser-Sniffing auf andere Weise. auf eine weniger zuverlässige Art und Weise; Suche nach häufigen Nebenwirkungen, die mit einem Versionsupdate oder nachlässigem Skript ablaufen könnten ... – dandavis

+0

Ich mag diese Implementierung auch nicht. Zu mir, wenn Sie den solidesten Weg wünschen, einen Browser zu erkennen, ist [Modernizr.js] (https://modernizr.com/). Ansonsten sind die verbleibenden Lösungen Regex auf 'navigator.appName',' navigator.appVersion' und 'navigator.userAgent' oder diese hässlichen Hacks. –

+0

Ich sehe nicht, warum Entwickler UserAgent schnell ablehnen; es ist genau das, was verwendet werden soll. wenn 0,02% der Benutzer ihre ändern, so sei es; Sie können JS auch deaktivieren, also WTH. wähle deine Schlachten. – dandavis

Verwandte Themen