Ich hätte gerne das Betriebssystem und den Browser in der Body-Klasse. Ich brauche das für pixelgenaues Styling, weil sich die Schriften in verschiedenen OS/Browser-Konfigurationen nicht gleich verhalten. Nach etwas googeln und experimentieren. Die einzige Art, wie ich denken konnte, dies zu tun war eine indexOf zu verwenden ...Browser & OS als Body-Klasse
var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
var agt=navigator.userAgent.toLowerCase();
if (agt.indexOf("opera") != -1) return 'Opera';
if (agt.indexOf("firefox") != -1) return 'Firefox';
if (agt.indexOf("safari") != -1) return 'Safari';
if (agt.indexOf("webkit") != -1) return 'Webkit';
if (agt.indexOf("msie") != -1) return 'Internet Explorer';
if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
Ich denke, es ist nicht eine sehr schöne Lösung. Gibt es eine Regex, die das könnte? Oder gibt es einen schnelleren Weg, dies zu tun?
Wenn Sie wirklich auf Browser-Sniffing zurückgreifen wollen, viel Glück - das wird trotzdem scheitern, da das Rendern auch von installierten Schriftarten und Browser-Version abhängt (vor allem IE6 vs IE7 vs IE8 vs dem kommenden IE9). Wenn Sie eine pixelgenaue Seite benötigen, ist HTML das falsche Werkzeug dafür - machen Sie Ihre Seite stattdessen zu einem riesigen Bild, das ist die einzige Möglichkeit, sicher zu sein (es wird zahlreiche andere Probleme haben, aber es wird pixelgenau sein). Auch UA Spoofing. – Piskvor
das Problem für mich ist mehr das Betriebssystem als der Browser. Das Textrendering in MacOS und Windows ist sehr unterschiedlich. Ich bin immer wieder überrascht, wie hässlich die Schriften in Windows aussehen. Aber zumindest kann ich die Zeilenhöhe des Buchstabenabstandes und die Schriftgröße unterschiedlich steuern. Aber es ist völlig möglich, es pixelperfect zu tun, wenn der Designer Web-Erfahrung ist – meo