Browserübergreifende Kompatibilitätsprobleme

8

Ich sehe, dass viele Leute Probleme mit browserübergreifenden Kompatibilitätsproblemen haben.

Meine Frage ist, warum Browser die HTML, CSS oder JS anders rendern?

Liegt es am DOM? Das Boxmodell?

Warum gibt es Cross-Browser-Kompatibilitätsprobleme, wenn es Standards von W3C usw. gibt?

Gibt es Unterschiede in der Darstellung der HTML-Inhalte in den großen Internetbrowsern? Warum können Internet Explorer, Firefox (Mozilla) und Opera den gleichen Inhalt unterschiedlich anzeigen?

Was sollte ich beachten, wenn ich eine browserübergreifende kompatible Website erstelle?

    
DarthVader 28.11.2010, 23:37
quelle

5 Antworten

4

Ich bin sicher, jemand wird das viel besser beantworten, aber hier ist ein Anfang:

Ja, es gibt Standards, die in Bezug auf das CSS-Rendering eingehalten werden sollen. Das Problem ist, dass einige Browser-Editoren ( hust Microsoft hust ) es nicht als Priorität ansehen, die Spezifikationen korrekt (oder sogar vollständig) zu implementieren. Selbst wenn die Layout-Engine daran arbeitet, die Kompatibilität sicherzustellen, kann es sehr unangenehm werden, herauszufinden, wie die Dinge beim Mischen verschiedener CSS-Eigenschaften und -Einheiten korrekt dargestellt werden sollen (siehe zum Beispiel den ACID-Test Ссылка )

Um eine browserübergreifende Website zu haben, müssen Sie im Grunde alle Seiten Ihrer Website überprüfen, die in den Browsern, die Ihre Besucher verwenden (oder die Sie unterstützen), korrekt dargestellt werden. Verschiedene Tools wie Selenium (selenehq.org) können dabei helfen.

Sie müssen im Grunde entscheiden, was Sie tun werden

  • Design für den kleinsten gemeinsamen Nenner (wenn es IE6 ist, gibt es nicht viel, was Sie tun können)
  • Design unter Verwendung von Validierungs-CSS und Verwendung von Hacks (z. B. clearfix), um fehlerhaftes Verhalten in bestimmten Browsern zu korrigieren
  • beschließen, bestimmte Browser nicht zu unterstützen (IE6 ist ein Hauptkandidat)
  • Sniff-Browser und passen Sie die Anzeige entsprechend an (NICHT die bevorzugte Vorgehensweise)

In Bezug auf Unterschiede in der Manipulation des DOM, Bibliotheken wie jQuery helfen sehr, da sie die Implementierungsunterschiede von Ihnen verbergen.

Als Referenz ist es eine gute Idee, Ihre Website in mindestens den folgenden zu testen:

  • WebKit-basierter Browser (Chrome, Safari)
  • Gecko-basierter Browser (Firefox)
  • IE
  • Opera
David Sulc 28.11.2010, 23:52
quelle
5

Es gibt viele Gründe oder Inkompatibilitäten:

  • Spezifikationen werden häufig als Antwort auf die Entwicklung von Eigentumsmerkmalen bestimmter Anbieter
  • geschrieben
  • Spezifikationen können manchmal schlecht geschrieben sein, mehrdeutig sein oder wurden nicht im Vorgriff auf spezifische Endnutzungsfälle geschrieben.,
  • Browser-Anbieter ignorieren gelegentlich die Spezifikation aus ihren eigenen Gründen.

Zusätzliche Faktoren:

  • Viele dieser Dinge sind schwer zu implementieren, lassen Sie sie richtig implementieren,
  • Es muss auch implementiert werden, um schlecht formatiertes HTML, Abwärtskompatibilität usw. zu handhaben. Browser-Anbieter opfern manchmal "Korrektheit" für "Interoperabilität",
  • Geschichte, Politik & amp; Persönlichkeiten.
Hamish 28.11.2010 23:47
quelle
3

Es ist eine Nachwirkung des großen Browserkriegs. Nun liegt Netscape Communications in Trümmern, aber Macken, die sich gegenseitig übertreffen, bleiben in der Codebasis des Browsers, und die Leute sind immer noch im Entwicklungsteam. Betrachten Sie Crockfords Vortrag , er gibt ein Highlight zum Thema. (Sie sollten die Datei speichern anstatt sie zu streamen)

    
Free Consulting 29.11.2010 00:51
quelle
2

Alles, was Hamish gesagt hat, plus ein weiteres großes Problem, auf das er angespielt hat, ist, wie Browser mit falschem HTML umgehen. Zum Beispiel war das Element zu Zeiten von IE4 / NS4 sehr problematisch. Wenn Sie ein Tag nicht schließen, schließt IE4 es für Sie. Netscape 4 ignoriert die Tabelle stillschweigend.

Das gilt auch heute noch, wenn ein Browser falsche Markierungen anders als andere korrigiert. Ja, das Markup sollte korrigiert werden, aber Browser versuchen ihr Bestes, um etwas zu rendern.

    
James Kovacs 28.11.2010 23:53
quelle
2

Der Standard gibt an, wie HTML / CSS-Markup in gerendert werden soll, das als visuelles Element angezeigt wird. Es gibt nicht an, wie das Rendering speziell funktionieren soll. Viele verschiedene Personen und Unternehmen haben verschiedene Möglichkeiten geschaffen, Markups visuell zu erstellen. Da HTML-Rendering eine äußerst komplexe Aufgabe ist, konvergierten sie natürlich nicht alle auf dieselbe Lösung. Alle Rendering-Engines zielen auf dasselbe Ziel ab, aber oft ist die Spezifikation vage genug, um kleine Unterschiede zu berücksichtigen (sei es nur Pixel-Level) und Bugs sind auch unvermeidlich.

Fügen Sie dazu hinzu, dass die Browser-Anbieter früher weniger an Standards interessiert waren und mehr über den schnellen Gewinn von Marktanteilen und dass einige Unternehmen sich nur langsam um Standards kümmern (Sie wissen wer Sie sind).

Am Ende werden Spezifikationen, die sehr komplex sind, und Browser, die noch komplexer sind, von vielen verschiedenen Personen geschrieben; Sie können nicht erwarten, dass aus diesem Prozess absolute Perfektion entsteht. Und Perfektion ist auch nicht das Ziel von HTML; Es soll eine einfache, hersteller- und plattformunabhängige Auszeichnungssprache sein, um Informationen auf einer Vielzahl von Geräten zu präsentieren, was es bemerkenswert gut macht. Wenn Sie pixelperfekte Ergebnisse benötigen, müssen Sie mit einer Technologie arbeiten, die dies bereitstellen sollte, wie Adobe Flash (das weder plattform- noch herstellerunabhängig oder einfach ist).

Versuchen Sie, es aus der halbperspektivischen Perspektive zu betrachten: Tausende von Menschen haben Millionen von Codezeilen geschrieben, die sehr unterschiedliche Dinge auf vielen verschiedenen Plattformen mit vielen verschiedenen Zielen und Schwerpunkten gemacht haben, und doch am Ende alle rendern HTML Markup fast identisch mit oft nur kleinen, praktisch irrelevanten Unterschieden. Es gibt natürlich Schwachstellen in jeder Engine und wenn du sie alle gleichzeitig triffst, wird deine Seite in jedem Browser auf verschiedene Arten unterbrochen. Aber das ist mit ein wenig Erfahrung zu vermeiden.

    
deceze 28.11.2010 23:48
quelle

Tags und Links