Home » Übersetzungen » Graceful Degradation

Graceful Degradation

Copyright © By Daniel R. Tobias
For original English text, go to: http://webtips.dan.info/graceful.html

TIPP: Es ist nichts falsch mit der Verwendung der neuesten Schnickschnack zu pfiffigen Features von neueren Browsern unterstützt, sondern versuchen, sie in einer Weise, die noch erlaubt Benutzern nicht unterstützt (oder absichtlich deaktiviert) diese Funktionen, um Ihre grundlegenden Inhalte zugreifen zu tun. Glücklicherweise ist dies einfach, auf dem Web zu tun, wenn Sie den Geist der Sprachen und Protokolle anstatt zu kämpfen ihm zu folgen.

“Graceful Degradation” ist ein wichtiger Grundsatz in Web-Design. Es bedeutet, dass, wenn Sie in Funktionen, die die Vorteile der neuesten und besten Features von neueren Browsern nehmen setzen, sollten Sie es in einer Weise tun, dass ältere Browser und Browser lassen Benutzer zu deaktivieren Besonderheiten können “step down” auf ein Verfahren noch erlaubt den Zugriff auf die grundlegenden Inhalte der Website, wenn auch vielleicht nicht als snazzy in Erscheinung.

Fast jede neue Funktion hinzugefügt, um die Web hat in einer Weise, graceful degradation ermöglicht getan worden, beginnend mit dem Zusatz der <IMG> Grafiken auf einer ehemals all-Text Web, die ein ALT-Attribut in dem Sie einen bieten enthält add Text-Alternative für nicht-grafische Browser.

HINWEIS: Es wäre sogar noch anmutiger, wenn die IMG-Tag war wie ein Container-Element definiert wurde, mit dem alternative content zwischen <IMG> und </ IMG>. Dies würde die alternative Inhalte automatisch in älteren Browsern, die nicht verstanden IMG, sowie Genehmigungsverfahren diese Inhalte Markup-Tags enthalten, etwas, das nicht in das ALT-Attribut kann verwendet werden, verursacht haben. Aber das ist nun Wasser unter der Brücke.

Neuere Konstrukte wie <APPLET> und <OBJECT> lassen, die Sie graceful degradation durch den Einsatz von alternativen Inhalt zwischen dem öffnenden und schließenden Tags des Elements. Alles, was zwischen <APPLET> und </ APPLET> (andere als die Parameter des Applets selbst) wird von einem Java-fähigen Browser mit Java-fähigen ignoriert werden, wird aber an Stelle des Applets durch einen Browser, der nicht versteht, verwendet werden Java oder es ist deaktiviert. Auf diese Weise können die Site-Entwickler bieten alternative statische Bilder, Texte oder Links zu den Informationen in Applet Form dargestellt, um Benutzer unterstützen zu ersetzen.

Hier ist ein Beispiel für ein Applet für graceful degradation codiert:

<APPLET CODE=”WaveEffect” align=center border=0 codebase=”http://www.mysite.com/applets/” width=200 height=200″>
<PARAM NAME=image VALUE=”enternow.gif”>
<PARAM NAME=HREF VALUE=”home.html”>
<A HREF=”home.html”> <IMG SRC=”enternow.gif” width=200 height=200 alt=”Enter meiner Website now.”> </ A>
</ APPLET>

Ein Java-Unterstützung Benutzer sieht das Ergebnis ein Applet “WaveEffect”, die vermutlich eine Grafik mit animierten Wellen-Effekte zeigen würde, und bieten eine Möglichkeit, sich auf die verlinkte URL in das “href”-Parameter zur Verfügung gestellt. Aber ein Nicht-Java-Benutzer hätte keine Möglichkeit zu sehen, was sollte da sein, oder sich weiter in den Ort, wenn dies die einzige Navigations-Technik, mit Ausnahme der alternative content. Dieser Inhalt besteht aus einem normalen statischen IMG-Tag präsentiert die gleiche Grafik in eine nicht-animierte Weise Hyperlinks auf die gleiche Seite des Applets lassen den Benutzer gehen würde. Und im Fall von Text-Browser, ist noch eine weitere Ebene der graceful degradation durch die ALT-Text mit dem Bild zur Verfügung gestellt.

In einigen Fällen, wenn es mehrere verschiedene Wege, den gleichen Effekt, und der Satz von Browsern, die eine oder andere von ihnen ist etwas anders, können Sie die maximale Kompatibilität, indem er mehrere Ebenen von verschachtelten contstructs, die anmutig abgebaut erreichen kann, wie ein Applet innerhalb einer EMBED innerhalb eines Objekts.

Es gibt auch ein paar spezielle Tags, die Sie Inhalte enthalten, die nur verwendet wird, wenn bestimmte Funktionen nicht verfügbar oder deaktiviert werden lassen. Zum Beispiel, Anzeige NOSCRIPT Elemente nur, wenn JavaScript nicht unterstützt oder deaktiviert ist. Dies kann nützlich sein, um alternative Navigation in Websites, auf denen die wichtigsten Bedienelemente in JavaScript implementiert werden. Ebenso sind noembed Elemente nur dann, wenn EMBED nicht unterstützt wird.

Es dauert nur ein bisschen mehr arbeiten, um diese richtig zu tun, und trägt stark zur Zugänglichkeit, Flexibilität und Suchmaschinen-Indizierungsanforderungen Ihrer Seiten.

Anmutig erniedrigende JavaScript Popups

Eine gemeinsame Wirkung auf vielen Seiten verwendet wird ein verknüpftes Dokument, die angezeigt wird, wie eine kleine JavaScript-Popup-Fenster erstellt. Falls du diesen Effekt verwenden, sollten sie sparsam, wenn überhaupt, da es sein kann lästig sein, viele Nutzer. Es gibt jedoch Fälle, in denen es nützlich, wie zum Beispiel in Aufspringen Referenzmaterial, jemanden beim Ausfüllen eines Web-Formulars zu helfen, ohne dass sie auf die Seite mit dem Formular (und möglicherweise nicht in der Lage, um wieder zu, wenn es abgelaufen verlassenaus ihrem Cache, Verlust der Daten, die sie teilweise eingegeben haben).

Oft werden die Entwickler dies mit einem Javascript zu tun: URL. Dies lässt viel zu in Bezug auf graceful degradation wünschen übrig, da nicht JavaScript-fähige Browser nicht weiß, was man mit einem solchen Link zu tun, und werden entweder gar nichts oder zu einem Fehler. Auch javascript: URLs sind nicht wirklich standards-compliant, ich kenne keinen formalen Spezifikationen für dieses Konstrukt kennen, und sie enthalten oft Zeichen, die nicht legal sind (unescaped) in URLs nach den Spezifikationen (z. B. Leerzeichen).

Glücklicherweise gibt es einen besseren Weg. Statt <A HREF=”javascript:YourPopupFunction(‘somefile.html’)”>, verwenden <A HREF=”somefile.html” onClick=”YourPopupFunction(‘somefile.html’); Rückkehr false”>. (Ich nehme an du hast die JavaScript-Funktion YourPopupFunction irgendwo in Ihrem Dokument definiert.) Die onClick-Attribut enthält Code, der ausgeführt wird (auf die Unterstützung von Browsern) ist, wenn der Link angeklickt wird, und das Ende return false bewirkt, dass der Browser nach der Durchführung dieser Haltestelle ( anstatt auf den normalen Hyperlink folgen). So hat es genau die gleiche Wirkung wie die javascript:-Link. (Beachten Sie, dass Sie den Code in onClick beginnt nicht mit “javascript:”., Da es nicht in Form einer URL) Aber für Nicht-JavaScript-fähigen Browser, ist die onClick ignoriert und die normalen Link gefolgt wird. So bekommen alle Benutzer auf das Dokument, das die Verknüpfung sind zu sehen.

HINWEIS: Da schreiben die oben, ich habe herausgefunden, dass bestimmte ältere Browser mit frühen Implementierungen von JavaScript nicht unterstützen return false richtig und am Ende tut sowohl das Popup und die “plain”-Link. Sie können dies mit <A HREF = “somefile.html” target = “somename” onClick = “newwin = window.open (”, ‘somename’, ‘width = 150, height = 150, resizable = 1′) zu vermeiden ; “>, die öffnet ein leeres Fenster mit dem Namen” somename “und dann kann die regelmäßige Verbindung zu Ziel. Non-JavaScript-Browser wird einfach ein neues regelmäßigen Fenster namens “somename”, oder ignorieren das Ziel und öffnen Sie die neue Seite in der ursprünglichen Fenster. Aber auch in jüngerer Zeit habe ich festgestellt, dass die Mozilla-Browser, wenn so konfiguriert, dass Versuche, neue Fenster öffnen zu ignorieren, wird in diesem Fall öffnen Sie das Popup-Fenster, sondern öffnen Sie dann das Link-Ziel in das ursprüngliche Fenster, so dass das Popup-Fenster nutzlos offen .Also, alles in allem ist das vorherige Beispiel-Code wahrscheinlich am besten.

Diese Techniken können auch in anderen Fällen eingesetzt werden, wo Sie einen Link auf JavaScript-Code auszuführen, wie zum Beispiel einen Link zu imitieren, der Browser-Schaltfläche “Zurück” mit history.back () wünschen. Aber denken Sie sorgfältig, ob Sie wirklich brauchen, um eine solche Funktion zu verwenden; Anwender werden wahrscheinlich von Links, die Dinge zu tun, wie gehen Sie zurück in Ihre Geschichte statt vorwärts zu einer anderen Seite als Link normalerweise nicht verwechselt werden.

TIPP: Verwenden Sie immer eine sinnvolle HREF-Attribut in Ihre Links, nicht ein “Dummy” ein, auch wenn der Hauptzweck der Link ist ein Skript auslösen.

Mit allen Mitteln, verwenden Sie nicht die bedauerlicherweise überhand Technik der Herstellung von Hyperlinks auf die “Dummy” HREF-Wert von “#” gehen, ich bin mir nicht sicher, wer erfunden, aber es scheint, umgesetzt wurden auf diese Weise in einigen Authoring-Tools die Verbindungen mit fancy JavaScript zu generieren, und nachgeahmt von dort aus in alle Arten von Inhalten, auch einige, die hand-codiert sind. Es ist eine schlechte Idee – wie ich dir oben gezeigt, solltest du machen den Hyperlink Referenz etwas Sinnvolles, das wird auch funktionieren, wenn JavaScript deaktiviert ist – und darüber hinaus, da “#” ist nicht definiert, wie eine URL-Referenz, ist es von verschiedenen interpretiert Browser-Versionen nicht immer einheitlich, und kann dazu führen, einen Sprung nach oben oder unten auf der aktuellen Seite, oder fügen Sie eine nutzlose extra Seite auf der Browser-Sitzung Geschichte. Zumindest, wenn es sein muss, wie ein Dummy HREF verwenden, müssen Sie Ihren JavaScript-Befehl string mit “return false” an den Browser aus dem Versuch, die Dummy-Link zu folgen entmutigen zu beenden.

Anmutig erniedrigende Menu Rollover

Ein weiterer beliebter Effekt ist eine grafische Navigation zu tun “Rollover-Effekte”, wenn der Benutzer seine / ihre Maus über die Einträge, wie “leuchten” oder “nach unten drücken” auf die Schaltfläche, die in aktuellen Fokus ist, oder zeigt mehr Informationen über die aktuell ausgewählte Element, um den Benutzer entscheiden, ob Sie dem Link zu folgen.

Es gibt “anmutig” und “non-graceful” Wege, dies zu tun. Die “non-graceful” Wege kann die Navigation komplett ausfallen für Anwender, die nicht unterstützen (oder deaktiviert) solche Dinge wie Java, JavaScript oder Shockwave (je nachdem, wie das Rollover implementiert ist).Auf der anderen Seite, hinterlässt einen “graceful” Umsetzung der Website voll schiffbar, auch für “kleinste gemeinsame Nenner” Browser, während das Hinzufügen zusätzlicher Verbesserungen für diejenigen, die sie unterstützen.

Beispielcode für einen anmutig-abbauenden Rollover-Effekt ist unten. Doch mehr als das Erlernen spezifischer Code, sollten Sie lernen die allgemeine Haltung hinter diesem und anderen anmutig-abbauende Techniken in Web-Entwicklung. Das ist eine solide, logische Struktur mit einfachen, am weitesten unterstützten HTML-Konstrukte verwenden, und fügen Sie dann die “Glocken-und pfeift” als optionale Add-ons, die von nicht-unterstützende Browser ignoriert werden können. Das Gegenteil Haltung, die nicht zugänglichen Websites erstellt, wird die “Sound, logische, einfache” Schritt überspringen und Umsetzung der gewünschten Effekte direkt in einige fortgeschrittene Sprache (Java, Shockwave, etc.), landet mit Code, der nichtenthalten sogar eine “einfache” HTML-Link, dass Browser kann ohne das “applet” folgen, “script” oder “plug-in”. Dann, wenn Autoren wie ein nachträglicher Einfall, dass sie “schlichter” Browser unterstützen müssen entscheiden, landen sie klebt ein hässliches Reihe von “alternativen” Text-Links unterhalb der “fancy” Navigation, die nicht notwendig wäre, wenn sie die Website entworfen in einer würdevollen Art und Weise den ersten Platz.

Hier ist das “graceful” Rollover-Code: (Hinweis: In diesem Beispiel sind die “normalen” Versionen der Navigationstasten sollte in item1_reg.gif, item2_reg.gif, etc. platziert werden, während die “Mouseover”-Versionen item1_over.gif sind, etc. Alle Bilder sind in einem Unterverzeichnis mit dem Namen gfx / unter dem Verzeichnis der Seite ist in gesetzt werden, und die Bilder sind alle großen 250 x 50 Pixel. Natürlich können Sie jede dieser als notwendig für die eigene Website können sich ändern.

<html>
<head>
<title> Beispiel Rollover Seite </ title>
<script language=”JavaScript” type=”text/javascript”>
<-! Hide dieses Skript aus Nicht-JavaScript-fähigen Browser
if (document.images) {
item1_reg = new Image (250, 50); item1_reg.src = ‘gfx/item1_reg.gif’;
item1_over = new Image (250, 50); item1_over.src = ‘gfx/item1_over.gif’;
item2_reg = new Image (250, 50); item2_reg.src = ‘gfx/item2_reg.gif’;
item2_over = new Image (250, 50); item2_over.src = ‘gfx/item2_over.gif’;
item3_reg = new Image (250, 50); item3_reg.src = ‘gfx/item3_reg.gif’;
item3_over = new Image (250, 50); item3_over.src = ‘gfx/item3_over.gif’;
item4_reg = new Image (250, 50); item4_reg.src = ‘gfx/item4_reg.gif’;
item4_over = new Image (250, 50); item4_over.src = ‘gfx/item4_over.gif’;
}
Funktion Rollover (id, name) {
if (document.images) {document.images [id] src = eval (name + “src.”);.}
}
/ / Stop versteckt ->
</ Script>
<META Http-equiv=”Content-Script-Type” content=”text/javascript”>
</ Head>

<body>

<p Align=center>
<a href=”item1/” onmouseout=”rollover(‘item1′,’item1_reg’);return false;” onmouseover=”rollover(‘item1′,’item1_over’);return false;”> <img name = “ item1 “src =” gfx/item1_reg.gif “width =” 250 “height =” 50 “border =” 0 “alt =” [Item 1 ]“></ a>
<a href=”item2/” onmouseout=”rollover(‘item2′,’item2_reg’);return false;” onmouseover=”rollover(‘item2′,’item2_over’);return false;”> <img name = “ item2 “src =” gfx/item2_reg.gif “width =” 250 “height =” 50 “border =” 0 “alt =” [Item 2 ]“></ a>
<a href=”item3/” onmouseout=”rollover(‘item3′,’item3_reg’);return false;” onmouseover=”rollover(‘item3′,’item3_over’);return false;”> <img name = “ item3 “src =” gfx/item3_reg.gif “width =” 250 “height =” 50 “border =” 0 “alt =” [Item 3 ]“></ a>
<a href=”item4/” onmouseout=”rollover(‘item4′,’item4_reg’);return false;” onmouseover=”rollover(‘item4′,’item4_over’);return false;”> <img name = “ item4 “src =” gfx/item4_reg.gif “width =” 250 “height =” 50 “border =” 0 “alt =” [Punkt 4 ]“></ a>
</ P>

</ Body>
</ Html>

Beachten Sie die “if (document.images)”, die gewährleistet, dass nur Browser mit JavaScript-Versionen, die Bilder (die frühesten Implementierungen nicht) verarbeiten können, werden sie versuchen, Fehler zu vermeiden. Und beachten Sie, dass die Navigation Bilder ALT-Attribute mit dem Menüpunkt Text (Änderung der “Punkt 1″, “Item 2″, etc. Um aussagekräftigere Namen gegeben die Bereiche Ihrer Website) haben, so dass auch in Nur-Text-Browser die Benutzer können immer noch zu navigieren. Und ja, ich weiß, können Sie Rollover-Effekte noch anmutig tun mit Cascading Style Sheets, aber das ist eine ziemlich alte Seite, bis ich eine massive rewrite dieser gesamten Website tun, wird es einige ziemlich veraltete Sachen drin haben.

Wenn Sie lassen einige Editor oder Hilfsprogramm erzeugen die “Rollover-Effekte” für Sie, stellen Sie sicher, dass es mit einer anmutig-abbauende Technik, wie diese, und stellen Sie sicher, geeignete ALT-Attribute in den Bildern (von Hand, wenn nötig, wenn das Programm nicht, um Ihnen einen Weg, es zu tun).

Client-und Server-Side Forms

Wenn Sie ein Formular, dass nützliche Dinge tut mittels JavaScript-Funktionen haben, ist es immer noch möglich, damit er angenehm für Anwender, die nicht über JavaScript abbauen, wenn Sie sicher, dass es reicht, um ein Server-seitiges Formular, das die gleichen Funktionen ausführt machen , wenn auch nicht so effizient, wie es auf der Client-Seite getan werden kann.Zum Beispiel kann eine Web-Seite, wo der Benutzer in ihrer Höhe der Einsparungen pro Jahr und der zu erwartenden Zins-oder Dividendenzahlung Rate Yield-Typ kann und finden Sie heraus, wie viel Einsparungen werden sie in den Ruhestand gehen müssen mit JavaScript gemacht werden – dies erzeugt eine schnelle Berechnung ohne dass etwas an einen Server übermittelt werden, aber nicht an allen Arbeitsplätzen für Benutzer mit JavaScript deaktiviert.Das kann leicht, indem er die Vorlage Aktion (in Abwesenheit von JavaScript) gehen auf einen Server-Skript, das die gleichen Berechnungen ausführt behoben werden. Die JavaScript “onsubmit”-Funktion kann in “return false” Ende mit dem Server-Skript aus der Aktivierung, wenn es nicht benötigt wird, zu verhindern.

Wenn Ihr Formular soll an einen Server übermitteln, aber Sie wollen noch JavaScript-Funktionen nutzen, wie zum Beispiel zu bestätigen oder korrigieren Sie die Eingabe vor der Einreichung, dann sollten Sie die gleiche Prüfung und Korrektur Schritte in das Server-Skript duplizieren, so dass sie aren ’t übersprungen werden, wenn JavaScript nicht aktiviert ist oder zur Verfügung.Dies ist wichtig für Zwecke der Gefahrenabwehr trotzdem, da ein böswilliger Hacker eine Version des Formulars, dass die JavaScript-Validierung überspringt, um die Eingabe falsche Daten in das Programm versuchen, schaffen könnte, so muss es bereit sein, Bildschirm, solche Dinge zu sein. Einige Leute in den Newsgroups fragen die falsche Frage, und sagen: “Wie kann ich Kraft meiner Form nicht zu erscheinen, oder nicht zu unterwerfen, für Benutzer mit JavaScript deaktiviert, weil mein JavaScript-Validierung ist wichtig, um deren korrekte Funktion?” Sie können versuchen, dies zu tun, indem Sie den Absenden-Button oder das gesamte Formular ausgegeben werden per JavaScript die anstelle der normalen HTML, so dass es nicht zeigen, bis überhaupt ohne Client-seitiges Scripting. Dies kann leicht durch Hacker, die Ihre Quelle ansehen und rekonstruieren ein Formular mit einem Nicht-JavaScript Vorlage Taste besiegt werden kann, würde aber eine Erreichbarkeit Problem mehr normale Benutzer darstellen. Besser gestalten Sie Ihre Server-Skripte, so dass sie gut mit oder ohne Hilfe von JavaScript zu arbeiten.

Missverständnisse

Wenn Sie in HTML-Diskussionen in Newsgroups zu erhalten, sehen Sie wahrscheinlich jemand behaupten, dass “graceful degradation” wirklich bedeutet, dass Websites schlicht, langweilig und “kleinsten gemeinsamen Nenner.” Dies ist weit von der Wahrheit. Menschen, die sagen entweder gar nicht wirklich verstehen, graceful degradation, oder einfach nur versuchen, billige Schüsse gegen die sogenannten “Puristen”, anstatt zu diskutieren Web-Authoring in einer vernünftigen Art und Weise zu machen. Eigentlich ist graceful degradation nicht verlangen, dass Sie nicht verwenden etwas Phantasie oder hübscher, oder dass Sie “Autor für veraltete Browser.” Es ist einfach erfordert, dass Sie die Struktur aller Elemente, die Sie verwenden verstehen und bewusst sein und richtig nutzen die integrierten Funktionen, die das Einfügen von alternativen Inhalten, die für Benutzer zugänglich, die nicht können oder wollen die Lust ist erlaubt stuff.

Graceful Degradation vs Progressive Enhancement

Es gibt einige Diskussionen in letzter Zeit auf Web-Seiten über die Entwicklung der Unterschied in Mentalität zwischen “graceful degradation” und “Progressive Enhancement”, die eigentlich ziemlich ähnliche Konzepte, aber sah aus unterschiedlichen Richtungen. Wikipedia hat einen Artikel über Progressive Enhancement, und es gab Aufsätze zum Thema. Der grundlegende Unterschied besteht darin, dass in “Progressive Enhancement” Sie mit einem einfachen, logischen kompatiblen Satz von Markup-Inhalte, und dann Schicht verbesserte Features für moderne Browser oben drauf zu beginnen, während “graceful degradation” beginnt mit einem full-featured , erweiterte Website, voller Glocken und Pfeifen, und stellt sicher, es hat auch Inhalte, die zugänglich, wenn die Phantasie Funktionen, die nicht für einen bestimmten Benutzer arbeiten können. Nach diesem Maßstab, passt die Einstellung habe ich befürwortete mehr in PE als GD, obwohl ich die GD-Terminologie verwendet, weil die anderen Begriff noch nicht zu der Zeit erfunden worden. Jedenfalls wenn man es geschickt, nachdenklich und cluefully, sollten beide Techniken in sehr ähnlichen Sites führen.

Hall of Shame

Machen Sie Ihre Site besser suchen Sie in anderen Websites, die zeigen, durch Beispiel, was nicht zu tun!

Hinweis: Die Aufnahme einer Website in meiner “Hall of Shame” Links sollten nicht als irgendeine Art von persönlicher Angriff auf die Website der Schöpfer, der eine wirklich tolle Person, oder sogar einen Angriff auf den verlinkten Web Site als Ganzes werden kann ausgelegt werden , die eine Quelle der wirklich gute Informationen und / oder Unterhaltung.Vielmehr ist es einfach, um bestimmte Features (beabsichtigten oder unbeabsichtigten) der gelinkten Seiten haben, die Probleme, die durch eine bessere Gestaltung hätten vermieden werden können Ursache hervorzuheben. Wenn Sie finden, eine Ihrer Websites hier verbunden ist, nicht beleidigt, verbessern Sie Ihre Website so, dass ich dann nehmen Sie den Link!

Hira verwendet, um einen “Flash” und “Non-Flash”-Version auf der ersten Seite bieten, aber die “Non-Flash”-Version hatte noch Flash in it! Es ist einfach übersprungen extra “intro”-Seite, die noch mehr Flash hat. Nun ist es nicht zu tun, dass Idiotie, aber es hat immer noch ein Flash-Intro, wo die Option, es zu überspringen in der Flash eingebettet ist, was bedeutet, dass nicht-Flash-unterstützende Browser wird nur eine leere Seite mit keinen Weg, weiter in Bewegungder Website. Das Intro spielt lästige Titelmusik kontinuierlich, ohne die Möglichkeit des stoppen.

Links

  • Augmentative Authoring – einen anderen Blick auf graceful degradation.
  • Beispiel einer anmutig-abbauenden Server-und Client-Seite bilden: Es nutzt JavaScript, wenn aktiviert, aber wenn nicht das Formular an einen Server Skript, das die gleiche Funktion wie die JavaScript nicht, so dass die Form arbeitet für alle.
  • Tsutsumi – Die Kunstvon Geschenkpapier im Web
  • Flash-Satay – Diskussion eines webmaster Versuche, standards-compliant und anmutig-abbauenden Code erstellen, um eine Einlage Flash-Film.
  • Schnelltests auf Ihrer Website für Barrierefreiheit zu überprüfen
  • Hinterlasse eine Nachricht

    Deine E-Mail Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert. *

    *