Der Martin: Browsererkennung und das Boxenlayout

Beitrag lesen

Hallo Alfred,

Also habe ich in Javascript den Browser abgefragt und wollte dann in einer if() else() Anweisung die entsprechenden Pixelangaben machen.

der Ansatz ist aus zwei Gründen schlecht, die Umsetzung noch dazu fehlerhaft.
Also, warum ist das Unsinn, was du machen möchtest?

Erstens ist das Problem, das du angehen möchtest, ein Darstellungsproblem, hat also mit CSS zu tun, nicht mit Javascript. Daher sollte man es auch im CSS angehen und nicht mit einer anderen Technik auszubügeln versuchen.

Zweitens kann Javascript jederzeit deaktiviert sein, damit würde deine Korrektur -wenn sie denn richtig wäre- gar nicht wirksam werden.

leider scheint der Browser das nicht zu interpretieren.

Richtig, er müsste dich mit Fehlermeldungen regelrecht niederbrüllen.

<script type="text/javascript">
    v = navigator.appName;

Gefährlich irreführend: Du fragst den Namen des Browsers ab, nichts seine Fähigkeiten. Was, wenn jemand den Browsernamen zum Spaß in "Internet Exploder" umkonfiguriert hat? Oder ihn, wie ich, komplett umbenannt hat?
In deinem Fall ist das, wie schon erwähnt, eh nicht der optimale Ansatz. Aber wenn ich Unterschiede in der Javascript-Implementierung berücksichtigen möchte, dann frage ich doch nicht den Browsernamen ab, sondern das Vorhandensein bestimmter Methoden oder Eigenschaften, die ich nutzen möchte.

if (v == 'Microsoft Internet Explorer')
          {
            <style type="text/css">
        margin-top:84px;
                margin-left:0px;
                border:0px;
            </style>
          }

Das geht ja so *überhaupt nicht*. Du kannst nicht innerhalb eines Scripts plötzlich wieder HTML/CSS-Code notieren. Wenn schon, dann müsstest du diese Zeilen mit document.write() ausgeben.

else
          {
            <style type="text/css">
                margin-top:44px;
                margin-left:2px;
                border:0px;
            </style>
          }

Dasselbe in Grün. Und wie schon angedeutet: Wenn jemand Javascript deaktiviert hat, bekommt er keine der beiden CSS-Varianten!

So, nun zur Sache. ;-)
Als erstes würde ich mich fragen: Ist es wirklich so schlimm, wenn ein Button nicht in allen Browsern exakt an derselben Stelle sitzt? Je nach Fenstergröße und Schriftgröße tut er das möglicherweise sowieso nicht, aber das kann ich nicht genau sagen, ohne deinen Code zu kennen. Auf jeden Fall erkennt man an deinen CSS-Angaben, dass du ein pixelgenaues Layout versuchst, was nicht unbedingt empfehlenswert ist, gerade *weil* es so viele Fallstricke dabei gibt.
Am besten du gibst mal einen Link zu deiner Problemseite (ohne die Korrekturen), damit man sich das mal live ansehen kann. Dann sehen wir weiter. Die Lösung könnte in einer CSS-Weiche liegen; vielleicht kann man aber auch ein paar Styles so umdefinieren, dass alle Browser damit klarkommen und eine Unterscheidung gar nicht mehr nötig ist.

So long,
 Martin

--
Irgendwann in grauer Vorzeit benutzte einer unserer prähistorischen Vorfahren ein Schimpfwort anstelle der Keule.
Die Zivilisation hatte begonnen.