Archiv:

Latest photoblog

photoblog

Blog » Webdev

Ich hab jetzt einen von 5!

Microsofts is scheinbar von 10 auf 9 gefallen, google.de von 9 wenn ich das richtig in Erinnerung habe auf 8, Macromedia hat jetzt einen von 10 (weiß Gott was die vorher hatten), und ich bin mit meinem Weblog von 4 auf 5 gestiegen, und von 2 auf 4 mit meiner Baustellen-Startseite. Und die Rede ist, klar: vom Google Pagerank Update welches heute durchgeführt wurde. Ebenso wurde ein Backlink Update gestartet, welches aber, wie irgendwie zu erwarten war, immernoch nicht richtig funktioniert. Wird es das wohl jemals? Nun denn, ich freue mich das mein Ding wieder n Stück länger geworden ist. Auch wenn es ja scheinbar eh nicht mehr von Bedeutung sein soll.

Verschwörung? Dem W3C auf den Zahn gefühlt

Irgendwas stimmt hier nicht …
In vielen Weblogs konnte man es lesen, das Webstandards-Project hat einen Test erschaffen (Acid2) welcher aufzeigen soll wie es mit der Standardkonformität der aktuellen Browser steht. Ok, soweit sogut. Nur, irgendwas ist hier nicht ganz richtig. Entweder hält sich das Webstandards-Project nicht an die Webstandards, oder das W3C kennt seine eigenen Standards noch nicht.

Aus Wikipedia:

Amaya ist ein experimenteller Browser und Web-Editor, der vom W3C seit 1996 entwickelt wird. Amaya integriert viele Standards, die von den verbreiteten Browsern oftmals noch nicht implementiert wurden. So unterstützte dieser Browser bereits vor den meisten anderen Browsern XHTML, MathML oder SVG. (…) Durch die Implementierung all dieser Standards ist Amaya ein Browser, der oft zu Demonstrationszwecken verwendet wird.

Soweit sogut, Amaya also DER Webbrowser des W3C der sich an die Standards hält. Wenn dies so ist, wieso surfe ich dann noch mit Firefox? Ok, probieren wir es aus, umsteigen kann man später immernoch. Wir laden uns also auf der Seite des W3C den W3C-Webstandard-Browser Amaya runter, installieren, und starten ihn. Begrüßt werden wir neben einer Hollywoodreifen SVG-Animation (Woho!! Ich will mehr davon im Web, animierte gifs sind out!), auch von einer Renderengine die meine Fonts glättet. Igitt! Aber nun denn.

Nun bewegen wir den standardkonformen W3C Webstandardbrowser auf die webstandard-konforme Acid2-Webstandard-Browsertestseite des Webstandard-Projects. Zu sehen sein sollte jetzt eigentlich das Bild eines Smileys der scheinbar zuviele nicht-webstandard-konforme Internetseiten angeschaut hat. Nämlich dieses hier: http://webstandards.org/act/acid2/reference.html
Doch was erscheint anstelle des LSD Smilies? Einen … roten Kasten??? Verschwörung? Korruption?
Grafik: Acid2 im Amaya Browser

Mögliches Fazit dieses Tests:
Entweder das W3C beherrscht seine eigenen Standards nicht, das Webstandard-Project behauptet zu unrecht das Webstandard-Project zu sein, oder Wikipedia lügt und Amaya ist in Wirklichkeit garkein nach-den-Standards-arbeitender Browser. Entscheidet für euch selbst!

(via: BS-Markup)

Skiplinks als Seitenelement

Viele Seiten, vor allem die mit viel Inhalt, setzen mittlerweile auf „Skiplinks“ (Sprungmarken) für Textbrowser und Screenreader. Also Links, welche für den Otto-Normal User nicht sichtbar sind, einem Textbrowser- oder Screenreader-User jedoch die Navigation durch die Seite erleichtern (können). Ein Skiplink kann beispielsweise dafür sorgen, dass der User direkt zum eigentlichen Inhalt der Seite klicken kann, ohne sich zum x-ten Mal die Navigation vorlesen lassen zu müssen.

Den Möglichkeiten sind bei der Erstellung dieser Sprungmarken keine Grenzen gesetzt. Es gibt die Möglichkeit den Link mit einem absurd hohen negativen Text-Einzug oder Margin zu versehen, display:none oder eine negative Positionierung zu verwenden. Er sollte jedoch immer am Anfang eines Dokumentes erscheinen, da es wenig Sinn machen würde, würde er sich mitten im Dokument verstecken.

Diese Skiplinks müssen aber für Benutzer einiger grafischer Browser nicht im Verborgenen bleiben. Die Stars der Stunde sind in diesem Fall das <abbr title=“Hypertext Markup Language“>HTML</abbr>-Attribut tabindex, sowie das <abbr title=“Cascading Stylesheets“>CSS</abbr> Pseudo-Element :focus. Da der Internet Explorer :focus wie so vieles nicht unterstützt, bleibt dieser leider wieder einmal außen vor.

Ein Beispiel wie diese Methode aussehen kann, findet man hier auf der Seite, indem man mehrmals die Tab-Taste drückt, und auf die linke obere Ecke des Browserfensters schaut.

Der Code in meinem Beispiel sieht im HTML wie folgt aus:


und im CSS:

.skiplink a {
    background: white;
    font-size: 1.3em;
    left: 0; 
    position: absolute; 
    top: -100px; 
    padding: 0 5px; 
    z-index: 100;
}
.skiplink a:focus {
    top: 0px;
}

Zur Erklärung:
Durch das Attribut tabindex legen wir fest, in welcher Reihenfolge ein Browser die auf der Seite vorkommenden Links anspringen soll. Durch tabindex="1" und tabindex="2" sagen wir dem Browser also, das er erst den Link „Zur Navigation springen“, anschließend „Zum Content springen“ anwählen soll. Diese Links sind jedoch dank CSS so formatiert, dass sie an einer Position 100px über dem sichtbaren Bereich (Viewport) angezeigt werden. Nutzen wir nun die Tab-Taste zum Navigieren, so springt der Fokus auf den ersten tabindex-Link „Zur Navigation springen“. Der Link ist also fokussiert, und das Pseudo-Element :focus greift. Durch .skiplink a:focus {top: 0;} holen wir den entsprechenden Link wieder auf den Boden der Tatsachen, bzw vielmehr in den Viewport zurück, und sehen jetzt an der von uns festgelegten Position, den ansonsten unsichtbaren Skiplink.

Durch diese Technik lassen sich natürlich nicht nur Skiplinks zu Bereichen der Seite, sondern auch komplette Seiten-Navigationen zugänglich machen. Inwiefern das jedoch Sinn macht, ist die andere Frage. Dieses Beispiel funktionierte in meinen Tests übrigens in Mozilla-Browsern, und Teilweise in der Opera8 Beta, welche jedoch Probleme hatte den Link nach dem Fokussieren wieder aus dem Viewport zu schieben.

Links zum Thema:

application/xhtml+xml Erkennung

Björn schrieb einen Artikel über „unechtes“ XHTML & „Tagsoups“, da heutige (X)HTML-Seiten der Kompatiblität-halber meist als text/html ausgeliefert werden. Ein kleines php-Workaround gibt es jedoch im XHTMLFORUM, zumindest um wenigstens application/xhtml+xml-fähigen Browsern den richtigen Content-Type auszuliefern:

<?php
function ua_accepts_xhtml() {
    /* Prüft, ob an den UA XHTML ausgeliefert werden darf.
     * Gibt TRUE zurück, wenn ja, FALSE, wenn nicht. */
 
    /* In dubio pro HTML. */
    $xhtml = FALSE;
    $check_pattern = '|application/xhtml+xml(?!s*;s*q=0)|';
 
    /* Behauptet der UA, XHTML zu können? */
    if (($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.&#049;') and
        isset($_SERVER['HTTP_ACCEPT']) and
        preg_match($check_pattern, $_SERVER['HTTP_ACCEPT'])) {
            $xhtml = TRUE;
    }
    /* Ältere Geckos haben ein paar Crashbugs mit XHTML. */
    if(isset($_SERVER['HTTP_USER_AGENT'])) {
        if(preg_match("|rv:0.9|", $_SERVER['HTTP_USER_AGENT'])) {
            $xhtml = FALSE;
        }
    }
    return $xhtml;
}
 
/* Anwendung. */
$content_type   = ua_accepts_xhtml() ? 'application/xhtml+xml' : 'text/html';
header('Content-Type: ' . $content_type . ';charset=utf-&#056;');
header('Vary: Accept');
?>

Der entsprechende Thread dazu, inklusive besserer Übersicht findet sich unter:
http://www.xhtmlforum.de/viewtopic.php?t=2151#11472

Links zu PDFs im Browser kenntlich machen

Im Dr. Web Weblog erschien heute ein Beitrag zum Thema nervige PDF Downloads im Browser. Da auch ich bereits mehrfach darauf „hereingefallen“ bin, habe ich mich dran gemacht eine kleine Lösung dieses Problems zu suchen, und habe sie dank Susanne Jäger aus der CSS-Mailingliste auch gefunden.

In meinen Tests funktionierte dieser Trick leider nur im Mozilla(-Firefox), möglicherweise könnte er jedoch auch schon mit der neuen Opera 8 Beta funktionieren, welche mir jedoch zum Zeitpunkt des Tests leider nicht zur Verfügung stand. Im Opera 7.54 funktionierte es jedenfalls nicht. (Oder ich hab was falsch gemacht ;) )

Vor einiger Zeit schrieb ich einen Artikel zum Thema CSS-Signaturen in dem ich beschrieb, wie man in den aktuellen Browsern User-Stylesheets einbindet. Diesen Trick werden wir uns hierbei zu Nutze machen.

Wir legen dazu wie beschrieben, im Mozilla-ProfilOrdner eine userContent.css an, oder editieren unsere vorhandene, und schreiben in diese die Zeile
a[href$=".pdf"]:after {font-size: 10px; color: red; content: " [PDF]";}

Durch den CSS3 Attribut-Selektor a[href$=".pdf"] formatieren wir alle Links eines Dokumentes, deren href-Attribut auf .pdf endet([href$=".pdf"]), durch das Pseudoelement :after weisen wir den Browser an, hinter dem Link die angegebenen CSS-Deklarationen auszuführen. In dem von mir beschriebenen Fall wird also hinter den entsprechenden Link (:after), ein kleines [PDF] geschrieben (content: " [PDF]";), welches in 10px Größe rot dargestellt wird (font-size: 10px; color: red;).

Diesen Trick kann man natürlich beliebig abändern und seinen Wünschen hin anpassen. Beispielsweise kann man ebenfalls über
a[href$=".pdf"] {background: red !important;} einem Link zu einem PDF einen roten Hintergrund geben.

Dies alles lässt sich natürlich genauso in Stylesheets anwenden, welche man online in öffentlichen Projekten benutzt. Allerdings sollte man sich, durch mangelnde CSS3-Unterstützung seitens der Browser, dadurch nicht auf ausreichende Kennzeichnung der PDF-Links verlassen. Einigen Usern, oder einem selbst mittels User-Stylesheet, kann dies aber schon eine kleine Hilfe sein, um nicht mehr in die „PDF Falle“ zu tappen.

Netscape 8 Beta zum Download

Eigentlich wollte ich Anfang diesen Monats ein kleines Review zum Netscape 8, welcher mir zufällig in die Hände fiel […], schreiben. Da mir dazu aber die Zeit fehlte, hab ich das jedoch sein gelassen, und stattdessen könnt ihr das alles jetzt bei der PC-Welt lesen.

Und, wer es unbedingt möchte, kann den Browser auch gleich dort runterladen.

Mir gefällt das Teil nach wie vor, und ich glaube, sollte es eines Tages alle nützlichen Firefox-Extensions auch für den neuen Netscape geben, werde ich schwer überlegen müssen ob ich nicht vielleicht umsteige. Probierts aus, viel Spaß!

Schöne Formulare in XHTML+CSS

Vorgestern wurde ich gefragt wie ich es in XHTML-Dokumenten handhabe Formulare zu gestalten. Ob ich dafür immer noch auf Tabellen zurückgreife, oder ob ich dies anders löse. Diese Frage möchte ich zum Anlass nehmen endlich einen kleinen Artikel zum Thema „Formulare“ zu verfassen, welcher ohnehin schon lange geplant war. Vorab eine Antwort auf die Tabellenfrage mit kleiner Erläuterung: Tabellen sind laut w3c lediglich dazu gedacht (und nur dazu gedacht!) um tabellarische Daten darzustellen. Daher ja -> table. Nicht zum layouten, und eben auch nicht um Formulare zu strukturieren. Da ich mich, seit ich XHTML einsetze, mit Semantik mehr und mehr beschäftige, achte ich natürlich auch darauf die korrekten Tags zu benutzen. Anders würd Semantik logischerweise keinen Sinn machen.

Daher möchte ich mit diesem Artikel denjenigen die bisher auf Tabellen zurückgegriffen haben, oder gerade erst anfangen Webseiten mittels CSS zu gestalten, ein wenig auf die Sprünge helfen wie man auch ohne Tabellen (oder vielleicht sogar gerade ohne Tabellen) wunderschöne Formulare zaubert. Sicherlich wird es schon einige Artikel zum Thema XHTML/Formulare geben. Da jedoch immer mehrere Wege nach Rom führen, und ich in den letzten Monaten für mich ein recht eigenes System entwickelt habe mit dem ich Formulare style, werde ich zur Recherche nicht auf andere Artikel zurückgreifen, sondern lediglich meine Art und Weise zeigen und erläutern. Sollten sich Fehler einschleichen, inhaltlich oder auch einfach vom sprachlichen, so bitte ich euch wie immer nicht davor zurückzuschrecken mich darauf hinzuweisen.

Jeder kennt DIE Standardtags auf die beim Formular erstellen zurückgegriffen wird:
form, input, textarea, option/select

Die Tags die jedoch dazu vorgesehen sind um Formulareingabefelder sinnvoll und schön zu beschriften benutzen jedoch leider nur wenige, noch weniger dürften überhaupt bereits etwas davon gehört haben:
fieldset, legend, label

Na, bisher davon schon einmal jemand etwas gehört? Wenn nein, nicht weiter schlimm, einfach weiterlesen. Ein ungestaltetes Formular in dem alle diese Elemente vorkommen, habe ich hier zur Demonstration erstellt, ein solches, jedoch bereits per CSS formatiertes Formular, gibt es zum Beispiel hier auf der Seite unter Kontakt zu sehen. Wer bisher seine Formulare in Tabellen gepackt hat, dem werden vielleicht die Kästen um inhaltsähnliche Felder aufgefallen sein.

Die Elemente welche hier sichtbar zum Zug kamen, sind die bereits erwähnten fieldset, sowie in Verbindung damit legend. Jemand der ein wenig rumgeklickt hat, dem wird evtl aufgefallen sein, das ein Eingabefeld oder eine Radiobox/Checkbox angewählt wurde, wenn man nur auf den Beschreibungstext geklickt hat. Dazu sorgt das, für das menschliche Auge im Browser, nicht auf den ersten Blick wahrnehmbare Tag label in Verbindung mit dem dazu benötigten Attribut for. Diese Technik benutzt zum Beispiel auch google auf seiner Suchseite, wenn man auf den Text „Das Web“, „Seiten auf Deutsch“ oder „Seiten aus Deutschland“ klickt. All dies passiert gänzlich ohne JavaScript. Der Wert vom for-Attribut beruft sich dabei auf einen Identifikationsbezeichner (id), welches dem entsprechenden Inputfeld, für welches das Label gelten soll, zugewiesen wird. Ein <label for="name"> beschreibt also ein Inputfeld welches die id „name“ besitzt. Ein Blick in den Quelltext von meinem Beispiel dürfte einiges aufschlussreicher sein.

Wer einen Blick in den Quelltext geworfen hat, dem wird vielleicht auch im label noch das Attribut accesskey aufgefallen sein. Dazu jedoch später.

Das grundlegendste wäre hiermit also schon erklärt:
fieldset gruppiert inhaltsähnliche Felder eines Formulares,
legend definiert eine Überschrift für die entsprechende Gruppe,
label weist einen Text einem bestimmten Eingabefeld zu.

Hier draus sollte ersichtlich werden das für ein label-Element das for-Attribut auf jeden Fall angegeben werden sollte, auch wenn dies laut XHTML-Spezifikationen nicht zwingend notwendig ist. Der User braucht so, ganz komfortabel, nur auf dem Text zu klicken, und gerade behinderte Menschen haben es um einiges leichter einen winzig kleinen Radiobutton oder eine Checkbox mit der Maus zu treffen.

for ist jedoch nicht das einzige Attribut welches ein label annehmen kann. Wie oben erwähnt ist auch das Attribut accesskey auf Labels anwendbar. Ist ein Accesskey, also eine „Zugriffstaste“ definiert, so kann der User sehr einfach mittels ALT-Taste + Accesskey ein entsprechendes Feld anwählen. In meinem obigen ersten Beispiel habe ich für die Felder unter „Kontaktdaten“ die Accesskeys 1-8 vergeben. Ein User kann also z.B. mittels [ALT]+[1] (im Opera [Shift]+[Esc]+[1]) das Feld „Name“ auswählen. Dabei ist jedoch darauf zu achten, dass man diese Accesskeys in irgendeiner Art kenntlich macht. Ein Artikel wie dies lösen kann findet sich bei AListApart
http://www.alistapart.com/articles/accesskeys/

Da die Möglichkeiten was das Markup angeht jetzt geklärt sind, kommen wir zum eigentlichen Styling des Formulars durch CSS. Weil jedoch nicht jedes Formular gleich aussehen sollte im www, beschränke ich mich auf Einzelheiten. Die Details kann am Ende jeder für sich abändern, oder auch auf dieser Grundlage ein komplett eigenes Formular stylen und dem Design seiner Seite anpassen. Das Formular welches ich hier beschreiben werde findet sich im Übrigen hier: www.manuelbieh.de/artikel/formulare/formular02.htm

Zuerst weisen wir dem Fieldset eine länge zu. 100% Länge macht bei einer hohen Auflösung wenig sinn, da die Begrenzung kaum noch ersichtlich wird. Außerdem ist der Standardrahmen hässlich, weswegen wir ihm einen eigenen Rahmen geben: border: 1px solid #4b408c. Als letztes ändern wir noch den Abstand der einzelnen Fieldsets, da diese mir zu eng beieinander liegen: margin: 1.5em auto 1.5em auto;. Die auto-Werte stehen in diesem Fall dafür, die Fieldsets horizontal zu zentrieren.

Damit sich die per legend definierten Feldüberschriften vom Text innerhalb der Felder abhebt, verpassen wir ihnen eine Hintergrundfarbe, etwas mehr Luft, einen eigenen Rahmen, sowie eine fette Schrift:

legend {
    background: #b7b1d5;
    border: 1px solid #4b408c;
    border-right-width: 2px;
    border-bottom-width: 2px;
    font-weight: bold;
    margin-bottom: 4px;
    padding: 4px;
}

Und weil es ziemlich bescheiden aussieht das die Eingabefelder aufgrund der unterschiedlichen Länge der jeweiligen Beschreibungen Treppen bilden, bringen wir diese auf eine Größe:

.kontaktdaten label {
    display: block;
    float: left;
    width: 5em;
}

Da label ein Inline Element ist, können wir ihm nicht direkt eine Breite zuweisen. Ergo: display: block. Da die Eingabefelder dadurch in die nächste Zeile rutschen würden, bekommen die labels ein float: left. Die Angabe für die Breite entspricht ca. die des längsten Wortes, also „Vorname:“.

Zu guter Letzt möchten wir natürlich nicht das die (noch hässlichen) Eingabefelder eng an eng übereinander stehen. Von daher geben wir auch ihnen etwas Luft, einen schöneren Rahmen, und einen hover- und active-Status:

input,textarea {
    background: white;
    border: 1px solid #4b408c;
    margin: 3px 0;
    padding: 3px 3px;
}  
input:active, input:focus, input:hover { 
    background: #E8EBDF;
}
label {
    margin: 5px 0;
}

Warum label {margin: 5px 0;}? Ich möchte das das Label vertikal zentriert mit der Eingabebox bündig ist. Da ich den Eingabefeldern hier einen Margin von 3px gebe, rutscht der Text im Label nach oben. Durch das margin im Label wird dies jedoch wieder ausgeglichen.

Wenn man einen Blick auf das Ergebnis wirft, sieht man, dass jetzt bereits mit wenigen Zeilen CSS, ein übersichtliches, nett aussehendes Formular gestaltet wurde. Auf dieser Grundlage dürfte es problemlos möglich sein das Formular seinen Wünschen hin anzupassen, zu verbessern, oder auch einfach so zu übernehmen. Einige Schritte die ich vorgenommen habe, habe ich in diesem Artikel nicht weiter kommentiert. Dies war der Fall wenn etwas zur Verständnis nicht nötig war.

Einige Unterschiede gibt es jedoch zwischen Formularen in HTML und in XHTML welche ich nicht angesprochen habe: Sogenannte „Shorttags“. Shorttags werden zum Beispiel benutzt um in Optionsfeldern eine Vorauswahl zu treffen, oder um Checkboxen oder Radiobuttons beim Aufruf der Seite bereits zu aktivieren.
<option selected> bzw. <input type="radio" checked>. Dies ist seit XHTML nicht mehr erlaubt. Stattdessen muss es in dieser Form geschrieben werden: <option selected="selected"> und <input type="radio" checked="checked">

Das sollte für heute reichen, und ich denke, dass mit diesem Artikel auch XHTML/CSS-Anfänger leicht ein schönes und benutzerfreundliches Formular zustande bekommen.

Solltet Ihr wie gesagt Fehler finden, der Meinung sein das ich etwas vergessen habe, oder sonstige Anmerkungen loswerden wollt, dann scheut euch nicht die Kommentarfunktion hier unten zu benutzen, oder schickt es mir einfach über mein Kontaktformular welches sich unter der Kommentarfunktion wiederfindet ;)

Links zum Thema

CSS Signaturen, Tools, Tricks und wenig Resonanz

Vor kurzem habe ich einen Artikel zum Thema CSS Signaturen verfasst. Leider stieß dieser Artikel auf weniger Resonanz als ich eigentlich erwartet hatte. Dies liegt meines Erachtens daran, dass sich wenige Leute mit dem Thema „Barrierefreiheit“ auseinandersetzen, und die wenigsten wissen welche Möglichkeiten sich durch diese beschriebene Methode bieten.

Ein sehr gutes, bereits älteres Beispiel, welches das Thema allerdings sehr gut beschreibt, habe ich gerade gefunden und möchte dies auf keinen Fall vorenthalten. Im Artikel Gmail Skinning wird gezeigt wie man mittels Firefox und dem hier von mir bereits erwähnten URIid dem google Mailservice Gmail ein komplett neues aussehen verpassen kann.

So wird im Prinzip aus jeder Seite ein kleiner CSS Zen Garden. Von daher möchte ich nochmals dazu aufrufen eine solche Signatur auf Euren Seiten zu benutzen!

Die Links zum Thema:
http://www.manuelbieh.de/www/blog/2005/01/25/css-signaturen
http://persistent.info/archives/2004/10/05/gmail-skinning
http://www.gmail.com
http://www.mozilla.org
http://extensionroom.mozdev.org/more-info/uriid
http://www.csszengarden.com

Is nich wahr! Microsoft IE7

Wenn ich das im Halbschlaf gerade richtig verstanden habe arbeitet Microsoft doch tatsächlich an einem Internet Explorer 7 für Windows XP. Nachzulesen gibt es dies im IE Blog

Die Betaversion des Browsers soll bereits ab Sommer 2005 zur Verfügung stehen wie Bill Gates auf der RSA Conference 2005 verkündete.

Grund für diesen unerwarteten Schritt von Microsoft sollen Sicherheitsaspekte sein. Was auch sonst.

Internet Explorer 7.0 will also provide even stronger defenses against phishing, malicious software and spyware. The beta release is scheduled to be available this summer.

Ich bin mal gespannt ob dieser neue Internet Explorer uns Webentwicklern und Designern noch mehr Probleme bereiten wird als eh schon und wir uns wünschen das es diese neue Version nie gegeben hätte, oder ob vielleicht sogar so tolle „Features“ wie Webstandards unterstützen werden.

Links zum Thema
http://www.microsoft.com/presspass/press/2005/feb05/02-15RSA05KeynotePR.asp
http://blogs.msdn.com/ie/archive/2005/02/15/373104.aspx
http://www.heise.de/security/news/meldung/56423
http://dean.edwards.name/IE7

Netscape 8 Beta im Februar

Wie Golem berichtet soll eine neue Betaversion des Netscape 8 bereits im Februar 2005 erscheinen. Der Browser setzt auf der Firefox Version 0.93 auf, und rendert Seiten wahlweise mit der IE-Engine.

Ich konnte den Netscape vor einigen Tagen bereits ausgiebig testen, und werde die nächsten Tage hier ein ausführliches Review veröffentlichen. Mir persönlich hat er aber in diesen ersten Tests schon sehr gut gefallen.

[via: firefox-webbrowser.de]