7 chronische Browser-Fehler im Web

Webbrowser sind unglaublich. Ohne Browser könnten wir uns nicht annähernd so gut mit Benutzern und Kunden verbinden, indem wir unsere Daten und Dokumente auf ihre Desktops, Tablets und Telefone übertragen. Leider machen uns all die wunderbaren Inhalte, die vom Webbrowser geliefert werden, umso frustrierter, wenn das Rendering nicht so elegant oder fehlerfrei ist, wie wir es gerne hätten.

Wenn es um die Entwicklung von Websites geht, sind wir den Browsern ebenso ausgeliefert wie ihnen gegenüber verschuldet. Jeder Fehler auf einer Plattform springt heraus, insbesondere wenn die Maschinen unserer Benutzer abstürzen. Und mit dem Design als einer Prämie für das Hervorheben oder Einpassen zerstört jede fette Linie oder jeder falsch angewendete Farbtupfer das ästhetische Erlebnis, an dem wir gearbeitet haben. Selbst der kleinste Fehler, wie das Hinzufügen eines zusätzlichen Pixels zur Breite einer Linie oder das geringfügige Ausrichten einer Tabelle, kann zu einer frustrierenden Benutzererfahrung führen, ganz zu schweigen von den Kosten für das Erkennen, Überprüfen und Umgehen.

Natürlich war es früher schlimmer. Die enormen Unterschiede zwischen den Browsern wurden durch die Einhaltung der W3C-Webstandards weitgehend beseitigt. Und die verbleibenden Unterschiede können dank der zunehmenden Verbreitung von Bibliotheken wie jQuery, die nicht nur das Hacken von JavaScript erleichtern, sondern auch das Papier darüber, wie Browser nicht gleich sind, im Allgemeinen ignoriert werden.

Diese Bibliotheken haben die Angewohnheit, Browserfehler einzufrieren. Wenn Browser-Unternehmen einige ihrer schlimmsten Fehler beheben, können die neuen „Korrekturen“ alte Patches und Workarounds stören. Plötzlich wird das "Update" zum Problem, das die alte Stabilität stört, die wir um den Fehler herum aufgebaut haben. Programmierer können nicht gewinnen.

Die Stabilität von Bibliotheken wie jQuery hat auch Browser-Builder dazu ermutigt, ihre Browser-Aktualisierungsprozesse zu beschleunigen und zu automatisieren. Mozilla hat sich verpflichtet, alle paar Monate eine neue Version von Firefox herauszubringen. In der Vergangenheit war jede Version ein stabiles Ziel für Webentwickler, und wir konnten ein kleines GIF auf unsere Websites setzen, um zu behaupten, dass sie beispielsweise in IE5 am besten funktionieren. Jetzt dreht sich der Kilometerzähler so schnell, dass eine neue Version von Firefox veröffentlicht wird, sobald der HTML-Code benötigt wird, um vom Server zum Client zu gelangen.

In der Zwischenzeit bitten wir die Browser, noch viel mehr zu tun. Die Website meiner lokalen Zeitung bringt meinen Computer in die Knie - Erweiterung von Popover-Anzeigen, Video-Snippets, die automatisch wiedergegeben werden, Code zum Anpassen von Anzeigen an meinen aktuellen Browserverlauf. Wenn meine Tochter sich eine Puppenwebsite ansieht, versucht das JavaScript verzweifelt, eine Puppenanzeige zu finden, die sie mir zeigt. All diese Magie macht die CPU kaputt.

All dies bedeutet, dass die heutigen Browser-Fehler seltener, aber schwerer zu erkennen sind. Hier ein Blick auf die neuesten Genres von Browser-Fehlern, die Webdesigner und -entwickler plagen - oder in vielen Fällen einfach nur nerven.

Layout

Die sichtbarsten Browserfehler sind Layoutfehler. Die Bugzilla-Fehlerdatenbank von Mozilla enthält 10 Abschnitte für Layoutprobleme. Dazu gehören keine Layoutprobleme, die als mit DOM, CSS oder Canvas verbunden eingestuft sind. Die wichtigste Aufgabe des Browsers ist es, Text und Bilder anzuordnen, und es ist oft schwierig, sie richtig zu machen.

Viele Layoutfehler können so klein erscheinen, dass sie fast esoterisch sind. Der Bugzilla-Fehler 1303580 ruft beispielsweise Firefox auf, weil er die kursive Version einer Schriftart verwendet, wenn CSS-Tags eine Schrägstellung erfordern. Vielleicht würde das nur ein Schriftsüchtiger bemerken. In der Zwischenzeit meldet Bugzilla-Fehler 1296269, dass Teile der Buchstaben in Comic Sans zumindest unter Windows abgeschnitten sind. Schriftdesigner machen einen Unterschied, und das ist ihnen wichtig. Wenn sie nicht in allen Browsern genau das richtige Erscheinungsbild erhalten, können Webdesigner möglicherweise etwas übermäßig frustriert sein.

Es gibt Hunderte, Tausende, vielleicht sogar Millionen dieser Fehler. Bei sind Probleme mit dem Verschwinden von Bildern in unserem CMS-Editor und Span-Tags aufgetreten, die nur im DOM angezeigt werden.

Speicherlecks

Es ist oft schwer, Speicherlecks zu bemerken. Per Definition ändern sie keine sichtbaren Eigenschaften. Die Website wird korrekt gerendert, aber der Browser bereinigt nicht nachträglich. Ein paar zu viele Besuche auf Websites, die das Leck auslösen, und Ihr Computer wird langsamer, weil der gesamte Arbeitsspeicher mit einer Datenstruktur gesperrt ist, die niemals wieder verwendet werden kann. Daher tauscht das Betriebssystem hektisch virtuelle Speicherblöcke auf die Festplatte aus, und Sie verbringen Ihre Zeit mit Warten. Am besten starten Sie Ihren Computer neu.

Die Details von Speicherleckfehlern können unglaublich geheimnisvoll sein, und wir haben das Glück, dass sich einige Programmierer die Zeit nehmen, sie zu beheben. Betrachten Sie das Problem 640578 aus dem Chronium-Browser-Stack. Wenn Sie einen Teil des DOM ändern, indem Sie an der innerHTMLEigenschaft herumspielen, wird Speicherplatz verloren. Ein Beispielcode mit einem engen wiederholten Schleifenaufruf requestAnimationFramedupliziert das Problem. Es gibt Dutzende solcher Probleme.

Natürlich ist es nicht immer die Schuld des Browsers. Das Chromium-Problem 640922 beschreibt beispielsweise auch einen Speicherverlust und liefert ein Beispiel. Eine weitere Analyse zeigt jedoch, dass der Beispielcode Date()auf dem Weg zum Testen der Zeit Objekte erstellt hat und diese wahrscheinlich die Ursache des Problems waren.

Blitz

Es ist ziemlich offiziell. Jeder hat die wundervollen Anti-Aliasing-Grafiken und Webvideos vergessen, die Adobe Flash ins Web gebracht hat. Wir machen es stattdessen für alle Abstürze verantwortlich, die möglicherweise seine Schuld waren oder nicht. Jetzt wird es offiziell in den Ruhestand versetzt, aber es geht nicht schnell. Selbst einige der zukunftsorientiertesten Unternehmen, die Webstandards vorantreiben, scheinen noch Flash-Code auf ihren Seiten zu haben. Ich bin überrascht, wie oft ich Flash-Code außerhalb von MySpace- und GeoCities-Websites finde.

Berührt und klickt

Es ist nicht einfach, die verschiedenen Arten von Eingaben zu jonglieren, insbesondere jetzt, wo Tablets und Telefone Berührungen erzeugen, die wie ein Mausklick wirken können oder nicht. Es sollte dann nicht überraschen, dass es in diesem Bereich viele Fehler gibt. Das Bootstrap-JavaScript-Framework führt eine Trefferliste der ärgerlichsten Fehler und einige der schlimmsten Fehler in dieser Kategorie.

Bei Safari beispielsweise fehlen manchmal Fingertipps auf den Text im Tag (151933). Manchmal funktionieren die Menüs auf dem iPad nicht, weil der Browser das Rechteck verschoben hat, um nach Eingaben zu suchen (150079). Manchmal lösen die Klicks ein seltsames Wackeln im Objekt aus - was sogar so aussehen könnte, als ob es absichtlich von einem nervösen Designer (158276) gemacht wurde. All dies führt zu Verwirrung, wenn der Text oder die Bilder auf dem Bildschirm nicht so reagieren, wie wir es erwarten.

Video

Es war schon immer geplant, die Bereitstellung von Audio und Video zu vereinfachen, indem die Verantwortung innerhalb des Browsers und aus der Welt der Plugins heraus verschoben wurde. Dies hat Schnittstellenprobleme beseitigt, aber nicht alle Probleme beseitigt. Die Liste der Videofehler ist lang und viele von ihnen sind nur allzu sichtbar. Der Bugzilla-Eintrag 754753 beschreibt "meistens rote und grüne Flecken, die verschiedene Geisterbilder enthalten", und der Bugzilla-Eintrag 1302991 "stottert", weil es kein besseres Wort gibt.

Einige der komplexesten Probleme treten auf, wenn die Browser die verschiedenen Verschlüsselungsmechanismen integrieren, um Piraterie zu verhindern. Fehler 1304899 deutet darauf hin, dass Firefox nicht automatisch den richtigen Verschlüsselungsmechanismus (EME) von Adobe herunterlädt. Ist es die Schuld von Firefox? Adobe? Oder vielleicht ein komischer Proxy?

Video-Bugs werden weiterhin dominieren. Die Integration von Webvideos in andere Arten von Inhalten durch Hinzufügen von Video-Tags zu HTML5 hat Designern viele neue Möglichkeiten eröffnet. Jede neue Möglichkeit bietet jedoch neue Möglichkeiten für das Auftreten von Fehlern und Inkonsistenzen.

Schweben

Die Fähigkeit der Webseite, der Maus zu folgen, die sich über die Seite bewegt, hilft Webdesignern, Benutzern Hinweise zu geben, welche Funktionen möglicherweise hinter einem Bild oder Wort verborgen sind. Leider kommen schwebende Ereignisse nicht immer so schnell wie möglich in die Kette.

Der neue Microsoft Edge-Browser beispielsweise verbirgt den Cursor nicht, wenn sich die Maus über einigen Eingabeelementen befindet (817822). Manchmal hört das Schweben nicht auf (5381673). Manchmal ist das Hover-Ereignis mit dem falschen Element verknüpft (7787318). All dies führt zu Verwirrung und rät von der Verwendung eines ziemlich ordentlichen Effekts ab.

Malware

Während es verlockend ist, Browserentwicklern die Schuld an Browserfehlern zu geben, ist es oft unfair. Viele der Probleme werden durch Malware verursacht, die als nützliche Erweiterungen oder Plugins dienen soll. In vielen Fällen macht die Malware etwas wirklich Nützliches, während sie heimlich Klicks oder Handel im Hintergrund stiehlt.

Das Problem ist, dass die Erweiterungsschnittstelle ziemlich leistungsfähig ist. Eine Erweiterung kann beliebige Tags und Code in alle Websites einfügen. In den richtigen Händen ist das sehr cool, aber es ist leicht zu sehen, wie der neue Code aus der Erweiterung auf den Code von der Website stoßen kann. Was? Sie wollten das Verhalten der $Funktion nicht neu definieren ?

Dies ist weniger ein Fehler als ein tiefes, philosophisches Problem mit einer sehr coolen Funktion. Aber mit großer Kraft geht große Verantwortung einher - vielleicht größer, als jeder Erweiterungsprogrammierer aufbringen kann. Der beste Weg, um dieses Problem zu betrachten, besteht darin, zu erkennen, dass dies der Bereich ist, in dem wir als Benutzer die Kontrolle haben. Wir können Erweiterungen deaktivieren und sie auf wenige Websites beschränken, auf denen keine Probleme auftreten. Die API ist für den täglichen Gebrauch etwas zu leistungsfähig - so leistungsfähig, dass es verlockend ist, Erweiterungs-APIs als die größten Fehler von allen zu bezeichnen. Aber das würde alles leugnen, was es für uns tut.

Zum Thema passende Artikel

  • Jenseits von jQuery: Ein Expertenhandbuch für JavaScript-Frameworks
  • Rückblick: 7 getestete JavaScript-IDEs
  • HTML5-Shootout: Wie sich Chrome, Safari, Firefox, IE und Opera messen
  • Rückblick: 13 primo Python-Webframeworks
  • Die Kraft der faulen Programmierung
  • Download: Leitfaden zur Karriereentwicklung von Entwicklern
  • 7 schlechte Programmierideen, die funktionieren
  • 9 schlechte Programmiergewohnheiten, die wir heimlich lieben
  • 21 heiße Programmtrends - und 21 werden kalt