Warum macht der IE so viel Murks -> Facharbeit
rockscientist01
- browser
Hallo Leute,
Also viele kennen das doch: Man coded für alle möglichen Browser - und danach bugfixed man für den IE. Aber warum ist das so? Ich suche Quellen im Netzt oder am liebsten gedruckt, die Hinweise darauf geben, warum Microsoft den IE so entwickelt wie sie es tun - mit all seinen Fehlern und Macken. Warum folgt M$ nicht den Richtlinien des W3C? Gibt es Stellungnahmen seitens M$ oder anderer Browser-assoziierten Machern oder Entwicklern zum Verhalten vom IE?
Ich schreibe eine Facharbeit zu diesem Thema und würde mich über Hinweise zu Quellen, die dieses Thema behandeln (am liebsten in gedruckter Form, aber web is auch super) freuen.
Vielen Dank
AO
Warum folgt M$ nicht den Richtlinien des W3C? Gibt es Stellungnahmen seitens M$ oder anderer Browser-assoziierten Machern oder Entwicklern zum Verhalten vom IE?
Frag doch mal direkt den, der es wissen müsste :-)
Lieber andi,
Frag doch mal direkt den, der es wissen müsste :-)
das ist meiner Meinung nach der falsche Ansprechpartner. Im IE Blog sollte man dagegen eher fündig werden.
Liebe Grüße,
Felix Riesterer.
Hallo Leute,
Hallo rockscientist!
Ich schreibe eine Facharbeit zu diesem Thema und würde mich über Hinweise zu Quellen, die dieses Thema behandeln (am liebsten in gedruckter Form, aber web is auch super) freuen.
Meiner Meinung nach liegt das daran, dass der M$IE auf einen Dateibrowser (Windows Explorer) zurück geht. War also ursprünglich nichts als ein "aufgebohrter" Dateibrowser, der Internetseiten anzeigen konnte. Als Dateibrowser ist dieser Systemteil fest im System Verankert. Dieses Konzept wurde beibehalten und ständig weiterentwickelt. Heute ist MSIE zwar ein eingenständiges Produkt, aber soweit ich weiß, immernoch ziemlich hart ins System integriert. Spricht: Eine deinstallation vom MSIE ist nahezu unmöglich.
Quellen für das Ganze kann ich spontan nicht liefern, denke aber mit den Info's wirst Du bei google weiterkommen.
Möglicherweise kann Dir auch folgende Seite weiterhelfen: http://www.anybrowser.com/ War allerdings schon Ewigkeiten nicht mehr drauf. K.P. wie aktuell die Inhalte sind.
Gruß, Markus**
Hallo,
Meiner Meinung nach liegt das daran, dass der M$IE auf einen Dateibrowser (Windows Explorer) zurück geht.
das ist so nicht ganz richtig; aber der Explorer in seiner Eigenschaft als Dateimanager und der Internet Explorer als Browser haben tatsächlich einiges gemeinsam. Allerdings nicht die Rendering Engine, und die ist es ja, die meistens kritisisert wird. Insofern kann ich das Argument nicht so ganz nachvollziehen.
War also ursprünglich nichts als ein "aufgebohrter" Dateibrowser, der Internetseiten anzeigen konnte.
Nein. Der Windows-Explorer ist eine weitgehend vereinheitlichte Oberfläche, die ganz verschiedene Informationen anzeigen kann. Dazu benutzt er jeweils spezielle DLLs, die auf die Anzeige der gewünschten Informationen ausgelegt sind.
Auch der eigentliche Web-Browser ist als solche DLL (mshtml.dll) realisiert, die auch vom herkömmlichen Dateimanager benutzt werden *kann*, um Webinhalte anzuzeigen. Aber auch von jeder anderen Anwendung, das ist das Schöne an diesem Konzept: Der Browser ist ein eigenständiges Modul, das (verhältnismäßig) einfach von anderen Anwendungen benutzbar ist.
Startet man aber gezielt den Internet Explorer (in Gestalt von iexplore.exe), dann erhält man eine etwas andere Programmoberfläche mit etwas anderer Menüstruktur, die auf den Web-Browser abgestimmt ist. Diese Anwendung iexplore.exe benutzt vorwiegend mshtml.dll, den eigentlichen Webbrowser, um Informationen anzuzeigen, *kann* aber auch das Anzeigemodul des herkömmlichen Datei-Explorers laden, um Informationen im lokalen Filesystem anzuzeigen.
Als Dateibrowser ist dieser Systemteil fest im System Verankert.
Kommt drauf an, was du jetzt mit "System" meinst. Er ist nicht, wie gern behauptet wird, mit dem Betriebssystem an sich verstrickt, aber dafür mit dem GUI. Und er ist deshalb nicht so leicht loszuwerden, weil das GUI für einige aufwendig gestaltete Dialogfenster in Wirklichkeit wieder mshtml.dll verwendet. Auch für die Windows-Hilfe.
Wenn man allerdings als Default-Shell nicht den üblichen Windows-Explorer konfiguriert, sondern beispielsweise cmd.exe, dann hat man in dem Moment auch ein wirklich IE-freies Windows.
Spricht: Eine deinstallation vom MSIE ist nahezu unmöglich.
Für den Tüftler außerhalb von Microsoft, ja. Es sei denn, man wäre bereit, eine Menge weiterer Funktionen als Kollateralschäden zu opfern.
Möglicherweise kann Dir auch folgende Seite weiterhelfen: http://www.anybrowser.com/ War allerdings schon Ewigkeiten nicht mehr drauf. K.P. wie aktuell die Inhalte sind.
Scheint inzwischen nur noch SEO-Alchimie zu sein ...
Ciao,
Martin
Zum nachlesen der technischen Details ist MSDN zu empfehlen.
Hallo,
Meiner Meinung nach liegt das daran, dass der M$IE auf einen Dateibrowser (Windows Explorer) zurück geht. War also ursprünglich nichts als ein "aufgebohrter" Dateibrowser, der Internetseiten anzeigen konnte.
das ist falsch. Der Internet Explorer war zunächst ein ganz normaler Webseiten-Browser.
Als Dateibrowser ist dieser Systemteil fest im System Verankert.
das kam erst später (mit IE 4) und zu der damaligen Zeit war der IE der leistungsfähigste und beste Browser auf dem Markt (außer für eingefleischte Netscape-Fans) und erwarb sich mit den Versionen 5 (und 5.5) sowie 6 einen enormen Vorsprung.
Dieses Konzept wurde beibehalten und ständig weiterentwickelt.
Auf anderen Plattformen gibt's das übrigens auch: Konqueror.
Freundliche Grüße
Vinzenz
N'amahoro!
Warum folgt M$ nicht den Richtlinien des W3C? Gibt es Stellungnahmen seitens M$ oder anderer Browser-assoziierten Machern oder Entwicklern zum Verhalten vom IE?
Ich würde da an Deiner Stelle auch mal die Veröffentlichungsdaten a. der Richtlinien und b. der IE-Versionen recherchieren und vergleichen. Meines Wissens ist die IE-Umsetzung teilweise älter als die jeweilige Richtlinie, und dann ist es recht klar, warum Microsoft die Richtlinie damals nicht beachten konnte.
Soweit ich das mitgekriegt habe, hat sich z.B. das ziemlich grundlegende Konzept hasLayout im Nachhinein als inkompatibel mit den W3C-Standards erwiesen. U.a. deswegen hat Microsoft die alte Engine auch aufgegeben und den IE 8 komplett neu entwickelt.
Viele Grüße vom Længlich
Einige Richtlienien des W3C basieren auf MS-Techniken wie z.B. der kaum heute wegzudenkende XMLHttpRequest. Nur entspricht diese Richtlienie dann auch wieder nicht zu 100% der MS-API. MS muss aber diese Schnittstelle kompatiebel halten (auch weil sie ja nicht nur im Browser verwendet werden kann). Aber auch da hat MS seit der Version 7 etwas getan.
Offizielle Stellungnahmen wirst Du vermutlich kaum bekommen; hier daher die Historie, gespickt mit einigen Vermutungen. Tatsächlich ist es so, dass der MSIE ursprünglich aus Mosaic, dem ersten grafischen Browser, hervorgegangen ist.
Etwa bei MSIE 4.0 erreichte der damalige Browserkrieg mit Marc Andreesens Netscape seinen ersten Höhepunkt. Zu diesem Zeitpunkt wurde aus den damaligen Browsern, die lediglich Texte und Bilder in Tabellen-Layout anzeigen konnten, Programme, die Seiten mit Stilangaben anzeigen konnten. Leider waren beide zueinander vollkommen inkompatibel. Die Vermutung, das die Inkompatibilitäten von MicroSoft forciert wurden, um die eigene Marktmacht auszunutzen, erscheint plausibel, da bei MS Office und Windows eine ähnliche Strategie verwendet wurde.
Ab Version 6.0 des IE (nachdem Netscape den Browserkrieg scheinbar verloren hatte) begann MicroSoft, bestehende Standards zu adaptieren, ohne jedoch von der ursprünglichen Strategie abzuweichen. Die Fehlerbehebungen führten jedoch zu weiteren Fehlern. Die gängigen CSS-Hacks für IE6 und 7 dokumentieren diesen Umstand ziemlich gut:
Vor dem HTML-Element sollte CSS-seitig nichts mehr stehen. Trotzdem liefert der IE6 beim folgenden Selektor Elemente zurück:
* html #element
Nachdem man MicroSoft auf diesen Fehler hingewiesen hatte, wurde das fragliche Element in der Reihenfolge vor das HTML-Element (auf gleicher Ebene) verschoben, so dass der IE7 standardwidrig dem folgenden Selektor folgt:
*+html #element
Zwei wesentliche Fehlentscheidungen bei der Entwicklung des MSIE stechen jedoch besonders hervor: der QuirksMode und hasLayout. Der QuirksMode ist jener Modus, in dem Seiten angezeigt werden, die nicht über eine Dokumententyp-Deklaration verfügen und in dem das Box-Modell die selben Fehler imitiert, die noch im IE4 Standard waren (den QuirksMode gibt es übrigens auch im IE8 noch!). HasLayout ist eine CSS-Eigenschaft, die man nicht gezielt setzen kann, aber bestimmte schwerwiegende Layout-Fehler im IE6/7 beheben sollte.
Nebenbei angemerkt: nicht alle Entwicklungen von MicroSoft waren schlecht. So wurde durch ein ActiveX-Control der XMLHttpRequest für die Browser-Version von Outlook eingeführt, der die Basis von AJAX nachstellt und inzwischen von allen modernen Browsern nativ unterstützt wird.
Auch die innerHTML-Eigenschaft geht auf eine IE-Entwicklung zurück - und ist wesentlich praktischer als das damals vorherrschende document.write.
Dementgegen ist document.all eine Krücke, auf die man besser verzichtet hätte. Dennoch bildet sogar Opera diese Funktionalität nach.
Nach Aussage eines mir bekannten MicroSoft-Mitarbeiters würde man den IE6/7 am liebsten ungeschehen machen. Dementsprechend hat MicroSoft bei der Entwicklung des IE8 viel Altlasten über Bord geworfen und einen nahezu nutzbaren Browser entwickelt. Leider werden einige Fehler immer noch übernommen, so dass abzuwarten bleibt, wie die Entwicklung weitergeht.
Gruß, LX
Dementgegen ist document.all eine Krücke, auf die man besser verzichtet hätte. Dennoch bildet sogar Opera diese Funktionalität nach.
... und Firefox und Safari (und vermutlich noch mehr)
Allerdings ist die Umsetzung nur bedingt. Man kann es nutzen, ein Test auf true ist aber false:
alert(document.all + ' docment.all = ' + (!!document.all));
Struppi.
Hi,
HasLayout ist eine CSS-Eigenschaft,
nein, ist es nicht. Es ist eine IE-Eigenschaft.
cu,
Andreas
HasLayout ist eine CSS-Eigenschaft,
nein, ist es nicht. Es ist eine IE-Eigenschaft.
Dem ist nichts hinzuzufügen...
Gruß, LX
Hi,
HasLayout ist eine CSS-Eigenschaft,
nein, ist es nicht. Es ist eine IE-Eigenschaft.
Dem ist nichts hinzuzufügen...
Warum fügst Du dann noch was hinzu? ;-)
cu,
Andreas
Hallo,
Zwei wesentliche Fehlentscheidungen bei der Entwicklung des MSIE stechen jedoch besonders hervor: der QuirksMode und hasLayout. Der QuirksMode ist jener Modus, in dem Seiten angezeigt werden, die nicht über eine Dokumententyp-Deklaration verfügen und in dem das Box-Modell die selben Fehler imitiert, die noch im IE4 Standard waren (den QuirksMode gibt es übrigens auch im IE8 noch!). HasLayout ist eine CSS-Eigenschaft, die man nicht gezielt setzen kann, aber bestimmte schwerwiegende Layout-Fehler im IE6/7 beheben sollte.
Der Quirksmodus ist doch keine Fehlentscheidung. Der Quirksmodus wurde ja erst zu dem Zeitpunkt erfunden, als sich Microsoft den Standards verschrieben hat und der standardkonforme Modus erfunden wurde. Sinn der Sache war, den Standard (z.B. das W3C-Boxmodell) zu implementieren und gleichzeitig kompatibel mit älteren Versionen zu sein. Über diese Strategie kann man nun streiten, jedenfalls sehe ich nicht, inwiefern das eine Erklärung für Browserfehler ist. Im Gegenteil dokumentiert es die Hinwendung zu Standards - vor dem Hintergrund der üblichen Microsoftschen Support- und Kompatibilitätsversprechen.
hasLayout ist erst einmal ein interner Flag, ein Hilfskonstrukt, das zum Layouting verwendet wird. Dass es in etwa so einen Flag gibt, ist in CSS 2 auch vorgesehen (u.a. Block Formatting Context). Allerdings hat hasLayout im IE eine weitergehende Bedeutung, die mit dem CSS-Standard nicht mehr konform geht. Und viele Bugs spielen hinein. In 2001 war das eine grobe Vereinfachung des (allgemein als unimplementierbar angesehenen) CSS-2.0-Standards.
Mathias
Hi, molily!
Ich sehe den Quirks Mode dennoch als Fehlentscheidung. Ein sauberer Schnitt hätte mehr Entwickler dazu bringen können, einen Doctype zu verwenden. Stattdessen einen Haufen Altlasten wie ein standardwidriges BoxModel usw. herumzuschleppen, kann ich nicht sinnvoll finden.
Abgesehen davon stimme ich Dir zu.
Gruß, LX
Ich sehe den Quirks Mode dennoch als Fehlentscheidung. Ein sauberer Schnitt hätte mehr Entwickler dazu bringen können, einen Doctype zu verwenden. Stattdessen einen Haufen Altlasten wie ein standardwidriges BoxModel usw. herumzuschleppen, kann ich nicht sinnvoll finden.
Einen Doctype zu verwenden war nie aus irgend einer technischen Begründung herraus sinnvoll - das Vorhandensein ist das einzige, was einen modernen Browser daran interessiert.
Wenn du HTML 4.01 Strict schreibst, ist das target-Attribut in a-Elementen z.B. nicht erlaubt, wenn du es einfügst funktioniert es aber trotzdem - ohne Probleme.
Das liegt daran, dass sich die Browser einen Dreck um die DTD scheren.
Hallo,
warum Microsoft den IE so entwickelt wie sie es tun - mit all seinen Fehlern
Wenn du nach etwas suchst, was nicht stimmt, wirst du es höchstwahrscheinlich nicht finden. Ich denke nicht, dass du dich mit dieser These dem Sachverhalt nähern wirst.
Microsoft entwickelt den IE nicht absichtlich mit Fehlern und Macken. Die Browserunterschiede, Inkompatibilitäten und Bugs haben unterschiedliche Ursachen. Manche hängen mit einer Firmenpolitik zusammen - Microsoft hat(te) kein Interesse daran, gewisse Techniken zu implementieren oder verschätzt(e) sich in deren Wichtigkeit -, andere haben historische Gründe.
Der Internet Explorer 6 war zum Zeitpunkt seiner Veröffentlichung im Jahr 2001 der beste Browser, allerdings legte Microsoft die Arbeiten daran erst einmal nieder. Der IE 6 mit seinen spezifischen Fehlern setzte sich daher in der Welt fest. IE 7 korrigierte die gröbsten Schnitzer, IE 8 lieferte eine weitesgehend fehlerfreie CSS-2.1-Implementierung. Im Bereich JavaScript herrschen noch APIs von vor zehn Jahren vor. Dasselbe gilt für die JScript-Engine mit ihren Besonderheiten, die Altlasten mit sich herumschleppt. Mit IE 9 will Microsoft in diesem Bereich aufholen.
Microsoft interessiert sich also durchaus dafür, Fehler zu korrigieren und Standards zu unterstützen. Es ist im Falle des IEs allerdings ein sehr, sehr langwieriger Prozess, der dadurch zurückgeworfen wird, dass alte IE-Versionen nicht verschwinden wollen. Mit dem aktuellen IE 8 lässt sich vergleichsweise robust arbeiten. Der schlechte Ruf kommt von einer allgemeinen Situation, die Microsoft zwar irgendwann verbockt hat, aber selbst seit ca. 6 Jahren schrittweise bekämpft (siehe LX).
Was andere, neuere Techniken angeht, so betätigt sich Microsoft nicht an den von anderen Browserherstellern (das sind die Konkurrenzkonzerne Apple und Google sowie die kleineren, aber ebenso einflussreichen Spieler Mozilla und Opera) dominierten offenen Webstandards. Microsofts Interessen und Zukunftsvorstellungen unterscheiden sich hier. Die anderen Browserhersteller drängen gerade mit viel Innovationskraft ihre Techniken auf den Markt. Sie haben sehr kurze Release-Zyklen und ehrgeizige Ziele, die Webplattform aufzubohren, um sie Plattformen wie Flash und Desktop-Anwendungen anzugleichen. Das ist auf beiden Seiten Machtpolitik. In puncto offene Webplattform steht Microsoft eher außen vor und gehört nicht zu den aggressiven Gestaltern, sondern sieht die Zukunft des Webs anders gelagert, setzt z.B. auf seine bestehenden Plattformen wie die .NET-Entwicklungsumgebung und Silverlight. Deshalb implementiert der IE bisher nur wenige HTML5- und CSS3-Techniken, was ihn im Vergleich zu anderen Browsern rückständig erscheinen lässt. IE9 wird die Techniken unterstützen, die Microsoft nützlich erscheinen - tut es also den restlichen Browserherstellern gleich.
Warum folgt M$ nicht den Richtlinien des W3C?
Microsoft folgt sehr wohl den Richtlinien des W3C.
Von welchen Richtlinien sprichst du genau? Dann könnte man genaueres sagen.
Gibt es Stellungnahmen seitens M$ oder anderer Browser-assoziierten Machern oder Entwicklern zum Verhalten vom IE?
Ja, schon seit 2005 bloggt das IE-Team über Standardunterstützung und arbeitet mit Vertretern der Webstandards-Bewegung zusammen. Und hat die Standardunterstützung mit den Releases IE 7, IE 8 und IE 9 Preview stetig verbessert.
Mathias
Einen wichtigen Punkt den du ggf. vergessen hast: Microsoft konnte nicht einfach sofort einen standardkonformen Browser hinstellen der die Fehler der Vorgänger nicht macht.
Das Problem sind/waren die zig Millionen Microsoft-Kunden mit einem IE6 - wenn du denen mit einem automatischen Update einen neuen standardkonformen Browser vorsetzt, funktionieren plötzlich viele Webseiten nicht mehr richtig - wer ist dann dran schuld? Eh klar, wieder Microsoft - obwohl es Webseitenautoren waren, die mit Conditional Comments gleich mal vorsorglich alle zukünftigen Versionen des IE mit speziellen Stilinformationen für den IE6 versorgen.
Man muss zugleich Fehler und Bugs ausbauen, aber die Fehler und Bugs so ausbauen, dass sie durch Weichen oder Hacks der Vorgängergenrationen nicht betroffen sind.
Zudem müssen auch sämtliche Anwendungen funktionieren, die die Engine des Browsers ausleihen - viele Drittanwendungen tun das, der Windows-Explorer tut das, der Windows-Desktop tut das, die Windows-Hilfe ist davon betroffen.
Da kann man nicht einfach mal alles Webwerfen und einen 100%ig standardkonformen Browser hinstellen und auf Abwärtskompatiblität verzichten - da wäre schnell Feuer am Dach.
Sehr richtig. Die anderen Browserhersteller genießen bzw. gönnen sich den Luxus, mit diesen Problemen so gut wie nicht konfrontiert zu sein. Sie können das aber nur, weil sie nicht auf denselben Märkten wie Microsoft unterwegs sind.
Firefox und Webkit hatten, seit sie populär wurden, keine richtig großen Kompatibilitätseinschnitte. Natürlich ist aus heutiger Sicht ein Firefox 2.0 ein lahmes, verbuggtes Produkt, dass sicherlich viele Websites fehlerhaft anzeigt, die damals für Firefox »optimiert« wurden. Aber im Gegensatz zum Software-Riesen Microsoft wurde Firefox 2.0 nicht auf Millionen Intranet-Clients installiert und in eine Umgebung fest eingeschweißt, aus der er nicht so einfach herauszulösen und zu ersetzen ist.
Kleinere wie Opera können zwar auch auf eine Geschichte der Eigenheiten und Bugs zurückschauen, aber mit der konsequenten Unterstützung von Webstandards konnten sie einen schwerwiegenden Kompatibilitätsbruch vermeiden. Einfach weil es nicht massenhaft alten Code gibt, der direkt auf eine Opera-Version zugeschnitten ist.
Mittlerweile haben sich fast alle Browserhersteller davon verabschiedet, nur alle paar Jahre eine große Browserversionen zu veröffentlichen. Sicherheitsupdates werden automatisch installiert und bei jedem dieser Updates wird dem Benutzer nahegelegt, auf die Folgeversion umzusteigen. Google Chrome macht das sogar ohne Nachfrage. Der Browser ist damit keine Version mehr, die Jahre Bestand hat, sondern ein Produkt unter ständiger Weiterentwicklung. Das ist für die Weiterentwicklung des Webs hervorragend, für das Entwickeln von fragilen Webapps für spezifische Versionen hingegen ein Graus (zumal in abgeschlossenen Intranets).
Z.B. Google als bloßer Browserhersteller braucht sich um vieles nicht zu kümmern, was Microsoft-Großkunden tagtäglich beschäftigt. Schreibt eure Webapps auf Basis von HTML5, kann Google einfach sagen, der Rest kann Google egal sein. Microsoft als Hersteller von Unternehmensoftware baut hingegen ein riesiges proprietäres Ökosystem und versorgt Firmennetzwerke damit. Da ist der IE nicht bloß ein losgelöster Browser, der sich ohne Rücksicht aktualisieren kann, sondern, wie du sagst, eine wiederverwendete Softwarekomponente und Entwicklungsplattform. Sämtliche anderen Entwicklungsumgebungen haben dieselben Probleme: Wird die API modernisiert, muss die alte API noch Jahre lang koexistieren, bis hunderttausende Zeilen Code an die neue API angepasst sind. Während Chrome gerade einmal 30 Millionen Nutzer hat, ist Windows vielleicht auf einer Milliarde PCs installiert (keine Ahnung, da gibt es wohl keine verlässlichen Zahlen).
Mathias