User-Agent-Tests sind mühsam, aber manchmal braucht man sie für subtile Dinge. In meinem Fall habe ich sie verwendet, um anzupassen, was ich für Tastenkombinationen (Command oder Control) angezeigt habe. Nichts wirklich Wichtiges.
if (navigator.userAgent.indexOf('Mac OS X') != -1) {
$("body").addClass("mac");
} else {
$("body").addClass("pc");
}
Die darin enthaltenen Anweisungen verwenden jQuery, um eine Body-Klasse hinzuzufügen, aber das ist nicht zwingend erforderlich, Sie könnten auch etwas anderes tun.
Das mag für Ihren beabsichtigten Verwendungszweck übertrieben sein, aber es ist wirklich praktisch, wenn Sie Elemente verschieben müssen oder wenn Dinge auf mobilen Geräten nicht ganz richtig sind.
http://rafael.adm.br/css_browser_selector/
Auf der Suche nach der Lösung für dasselbe Problem, Cmd vs. Ctrl anzuzeigen, habe ich diesen Snippet gefunden. Aber was, wenn jemand Linux auf einem Mac verwendet (mit einer Mac-Tastatur)? Diese Frage habe ich auch auf stackoverflow gepostet.
Ich möchte hinzufügen, dass wir auch das Navigator-Objekt mit der Plattform-Eigenschaft hinzufügen können... object.platform... es kann spezifisch sagen, z.B.: ob es sich um Macintosh 68k oder Windows 64bit handelt...
genau das, was ich brauchte, um zu prüfen, ob es sich um einen MAC handelt, für einen .exe-Datei-Download-Link (um einen anderen Link für Macs zu setzen)
Sie können eine Klasse in Kombination mit einem Dateityp-Selektor setzen
.mac a[href$=”.dmg”] { STLYE }
.pc a[href$=”.exe”] { STLYE }
Ist das, was Sie anstreben?
Danke Kumpel, es hat mir wirklich ein paar Stunden gespart.
Kann mir jemand raten, wie man das mit reinem JavaScript macht, nicht mit jQuery?
Anstelle von
$("body").addClass(<classname>);können Siedocument.body.classList += <classname>;oderdocument.body.setAttribute("class", <classname>);verwenden. Alles andere ist in JavaScript dasselbe wie mit jQuery.Während User Agents gefälscht oder von vornherein mehrdeutig sein können und oft sind, gibt
navigator.platformdie tatsächliche Plattform zurück und wird nicht gefälscht, wenn der User Agent gefälscht ist. Daher teste ich gernenavigator.platformaufMacPPCoderMacIntel(obwohl ich glaube, dass niemand mehr PPC Macs verwendet).Das wollte ich gerade kommentieren – navigator.platform ist der beste Weg.
Können wir es verwenden, um Linux zu erkennen? Wenn ja, wird es alle Linux-Versionen erkennen oder nur eine bestimmte Distribution wie Fedora und Ubuntu?
einfaches Beispiel, wie man es mit JS macht
http://codepen.io/anon/pen/reLWoQ