<?xml version="1.0" encoding="utf-8" standalone="no"?><rss xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">
<channel>
    
    <title>web output - english posts</title>
    <link/>
    <description>web dev blogging by Dirk Ginader</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 2.3.5 - http://www.s9y.org/</generator>
    
    <image>
    <url>templates/2k11/img/s9y_banner_small.png</url>
    <title>RSS: web output - web dev blogging by Dirk Ginader</title>
    <link/>
    <width>100</width>
    <height>21</height>
</image>

<item>
    <title>node.js Einführung und Javascript Best Practices - WebTech Conference 2010</title>
    <link>index.php?/archives/234-node.js-Einfuehrung-und-Javascript-Best-Practices-WebTech-Conference-2010.html</link>
    
    <comments>index.php?/archives/234-node.js-Einfuehrung-und-Javascript-Best-Practices-WebTech-Conference-2010.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=234</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=234</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;Zu meiner sehr grossen Freude hatte mich die Redaktion des Software &amp;amp; Support Verlages auch in diesem Jahr wieder eingeladen bei der &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/webtechcon.de/');" href="http://webtechcon.de/"&gt;Webtech Conference&lt;/a&gt; zu sprechen.&lt;/p&gt;
&lt;p&gt;Nach dem positiven Eindruck vom letzten Jahr war es überhaupt keine Frage für mich. Ausserdem hatten mich meine kürzlichen Experimente mit dem neuen Spielzeug &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/nodejs.org/');" href="http://nodejs.org/"&gt;node.js&lt;/a&gt; auch so begeistert dass ich es kaum erwarten konnte diese Begeisterung zu teilen.&lt;/p&gt;
&lt;p&gt;Ich freute mich auch dementsprechend riesig als ich sehen konnte dass das Publikum sich genauso begeistern konnte wie ich. Hier sind also die Slides meiner beiden Vorträge:&lt;/p&gt;

&lt;div style="width:425px" id="__ss_5424390"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader/javascript-auf-client-und-server-mit-nodejs-webtech-2010');" href="https://www.slideshare.net/ginader/javascript-auf-client-und-server-mit-nodejs-webtech-2010" title="Javascript auf Client und Server mit node.js - webtech 2010"&gt;Javascript auf Client und Server mit node.js - webtech 2010&lt;/a&gt;&lt;/strong&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/5424390" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt;&lt;/iframe&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/');" href="https://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader');" href="https://www.slideshare.net/ginader"&gt;Dirk Ginader&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;

&lt;div style="width:425px" id="__ss_5433306"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader/javascript-done-right-5433306');" href="https://www.slideshare.net/ginader/javascript-done-right-5433306" title="Javascript done right"&gt;Javascript done right&lt;/a&gt;&lt;/strong&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/5433306" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt;&lt;/iframe&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/');" href="https://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader');" href="https://www.slideshare.net/ginader"&gt;Dirk Ginader&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 14 Oct 2010 12:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/234-guid.html</guid>
    
</item>
<item>
    <title>The 5 Layers of Web Accessibility</title>
    <link>index.php?/archives/233-The-5-Layers-of-Web-Accessibility.html</link>
    
    <comments>index.php?/archives/233-The-5-Layers-of-Web-Accessibility.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=233</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=233</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;A Month ago I was very happy to be able to speak at &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/skillsmatter.com/event/ajax-ria/web-accessibility');" href="http://skillsmatter.com/event/ajax-ria/web-accessibility"&gt;Skills Matter&lt;/a&gt; as Part of the monthly &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/developer.yahoo.com/');" href="http://developer.yahoo.com/"&gt;YDN&lt;/a&gt; Tuesdays. I spoke about my ideas about Web Accessibility and introduced them as "The 5 Layers of Web Accessibility". &lt;/p&gt;&lt;p&gt;Thanks to Skills Matter you can now watch the recording of this talk here. You can also find the according Slides underneath:&lt;/p&gt;

				
		&lt;iframe src="https://player.vimeo.com/video/4571680" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;div style="width: 425px; text-align: left;" id="__ss_1390420"&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader/the-5-layers-of-web-accessibility');" style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="https://www.slideshare.net/ginader/the-5-layers-of-web-accessibility" title="The 5 Layers of Web Accessibility"&gt;The 5 Layers of Web Accessibility&lt;/a&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/1390420" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt;&lt;/iframe&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/');" style="text-decoration: underline;" href="https://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader');" style="text-decoration: underline;" href="https://www.slideshare.net/ginader"&gt;Dirk Ginader&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can also read the &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/blog.marchibbins.com/2009/05/11/something-for-everybody/');" href="http://blog.marchibbins.com/2009/05/11/something-for-everybody/"&gt;great writeup by Marc Hibbins&lt;/a&gt; who very nicely sums up the contents of my talk.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 01 Jul 2009 12:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/233-guid.html</guid>
    
</item>
<item>
    <title>Accessible Javascript with and without WAI ARIA at GeekUp Leeds</title>
    <link>index.php?/archives/231-Accessible-Javascript-with-and-without-WAI-ARIA-at-GeekUp-Leeds.html</link>
    
    <comments>index.php?/archives/231-Accessible-Javascript-with-and-without-WAI-ARIA-at-GeekUp-Leeds.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=231</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=231</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/geekup.org/events/127/');" class="serendipity_image_link" href="http://geekup.org/events/127/"&gt;&lt;!-- s9ymdb:305 --&gt;&lt;img class="serendipity_image_left" width="250" height="70" style="float: left; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-left: 5px; padding-right: 5px; " src="uploads/pics/geekup_logo.gif"&gt;&lt;/a&gt;Yesterday I had the great pleasure to have been invited to speak at a &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/geekup.org/events/127/');" href="http://geekup.org/events/127/"&gt;GeekUp special in Leeds&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I must say that these lovely Northeners turned out to be the best audience a speaker can dream of. I was presented with an endless stream of really good and very interesting questions. It's a shame there was no recording because the amazing audience really made this evening and my slides can in no way show the great discussions and fun we had.&amp;#160;&lt;/p&gt;
&lt;div style="width: 425px; text-align: left; " id="__ss_1297540"&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader/accessible-javascript-with-and-without-wai-aria?type=powerpoint');" style="font: normal normal normal 14px/normal Helvetica, Arial, sans-serif; display: block; margin-top: 12px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; text-decoration: underline; " href="https://www.slideshare.net/ginader/accessible-javascript-with-and-without-wai-aria?type=powerpoint" title="Accessible Javascript with and without WAI ARIA"&gt;Accessible Javascript with and without WAI ARIA&lt;/a&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/1297540" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt;&lt;/iframe&gt;&lt;div style="font-size: 11px; font-family: tahoma, arial; height: 26px; padding-top: 2px; "&gt;View more &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/');" style="text-decoration: underline; " href="https://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader');" style="text-decoration: underline; " href="https://www.slideshare.net/ginader"&gt;Dirk Ginader&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.flickr.com/photos/weboutput/3447653382/');" class="serendipity_image_link" href="http://www.flickr.com/photos/weboutput/3447653382/"&gt;&lt;!-- s9ymdb:306 --&gt;&lt;img class="serendipity_image_center" width="500" height="375" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-left: 5px; padding-right: 5px; " src="uploads/pics/3447653382_beb85d05aa_d.jpg"&gt;&lt;/a&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 16 Apr 2009 12:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/231-guid.html</guid>
    
</item>
<item>
    <title>Zu Gast im Mindgarden</title>
    <link>index.php?/archives/232-Zu-Gast-im-Mindgarden.html</link>
    
    <comments>index.php?/archives/232-Zu-Gast-im-Mindgarden.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=232</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=232</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;&lt;!-- s9ymdb:304 --&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.mindgarden.de/index.php?id=936');" href="http://www.mindgarden.de/index.php?id=936" title="Mindgarden Podcast #12"&gt;&lt;img class="serendipity_image_left" width="172" height="172" style="float: left; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-left: 5px; padding-right: 5px; " src="uploads/pics/mindgarden-podcast.png"&gt;&lt;/a&gt;Vor kurzem durfte ich zu Gast im Shoreditch Studio des &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.mindgarden.de/index.php?id=936');" href="http://www.mindgarden.de/index.php?id=936" title="Mindgarden Podcast #12"&gt;Mindgarden Podcasts&lt;/a&gt; sein. Mindgärtner Tobs interviewte mich zum vergangenen BarcampLondon6. Wir plauschten eine halbe Stunde über das Barcamp an sich und darüber wie ich, zusammen mit dem Rest des Teams, das Barcamp organisiert hatte.&lt;/p&gt;&lt;p&gt;Der Mindgarden Podcast ist übrigends generell eine Emfehlung wert. Die tolle Mischung von Web Dev Themen, Humor und Musik ist klasse und daher erlasse ich hiermit Subscribe-Befehl &lt;img src="templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon"&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 16 Apr 2009 12:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/232-guid.html</guid>
    
</item>
<item>
    <title>Think Visibility - SEO and more</title>
    <link>index.php?/archives/230-Think-Visibility-SEO-and-more.html</link>
    
    <comments>index.php?/archives/230-Think-Visibility-SEO-and-more.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=230</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=230</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;&lt;!-- s9ymdb:300 --&gt;&lt;img class="serendipity_image_left" width="110" height="110" style="float: left; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-left: 5px; padding-right: 5px; " src="uploads/pics/thinkvisibility.serendipityThumb.gif"&gt;Last weekend I had the great pleasure to have been invited to a very interesting new conference.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.thehodge.co.uk/');" href="http://www.thehodge.co.uk/"&gt;Dom "The Hodge" Hodgson&lt;/a&gt; kicked off the first, of hopefully a lot more conferences called,&amp;#160;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.thinkvisibility.com/');" href="http://www.thinkvisibility.com/"&gt;Think Visibility&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The one day conference&amp;#160;featured&amp;#160;a very wide &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.thinkvisibility.com/schedule.html');" href="http://www.thinkvisibility.com/schedule.html"&gt;selection of talks&lt;/a&gt;&amp;#160;across&amp;#160;Usability, Eye Tracking, Social Media, Affiliate, Analytics and many more with a slight focus on SEO. The Talks I've listened to were packed with a lot of insight and informations you wouldn't expect the speakers to give away. I learned a lot and I'm now very tempted to try out some of the SEO Voodoo myself &lt;img src="templates/default/img/emoticons/wink.png" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon"&gt;&lt;/p&gt;
&lt;p&gt;Not only was the Think Visibility very interesting but also great fun! The Northerners and their guests are a lovely bunch and as great to talk to during the conferences as in the Pub before and afterwards.&lt;/p&gt;
&lt;p&gt;Here are the Slides of my own Talk. A very basic&amp;#160;introduction&amp;#160;to Web Accessibility for a audience containing hardly any frontend guys which was quite new to me:&lt;/p&gt;
&lt;div style="width: 425px; text-align: left; " id="__ss_1113924"&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader/avoiding-common-accessibility-mistakes?type=presentation');" style="font: normal normal normal 14px/normal Helvetica, Arial, sans-serif; display: block; margin-top: 12px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; text-decoration: underline; " href="https://www.slideshare.net/ginader/avoiding-common-accessibility-mistakes?type=presentation" title="Avoiding common Accessibility mistakes"&gt;Avoiding common Accessibility mistakes&lt;/a&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/1113924" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt;&lt;/iframe&gt;&lt;div style="font-size: 11px; font-family: tahoma, arial; height: 26px; padding-top: 2px; "&gt;View more &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/');" style="text-decoration: underline; " href="https://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.slideshare.net/ginader');" style="text-decoration: underline; " href="https://www.slideshare.net/ginader"&gt;Dirk Ginader&lt;/a&gt;. (tags: &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/slideshare.net/tag/thinkvisibility');" style="text-decoration: underline; " href="https://slideshare.net/tag/thinkvisibility"&gt;thinkvisibility&lt;/a&gt; &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/slideshare.net/tag/accessibility');" style="text-decoration: underline; " href="https://slideshare.net/tag/accessibility"&gt;accessibility&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Mon, 09 Mar 2009 12:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/230-guid.html</guid>
    
</item>
<item>
    <title>jQuery Accessible Tabs - Wie man Tabs WIRKLICH zugänglich macht</title>
    <link>index.php?/archives/213-jQuery-Accessible-Tabs-Wie-man-Tabs-WIRKLICH-zugaenglich-macht.html</link>
    
    <comments>index.php?/archives/213-jQuery-Accessible-Tabs-Wie-man-Tabs-WIRKLICH-zugaenglich-macht.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=213</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=213</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;Während viele Tabs-Scripts behaupten zugänglich zu sein sind es die meisten leider weit davon entfernt. Während ich dieses jQuery Plugin zusammen mit meinem Kollegen &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/twitter.com/DesignedByBlind/');" href="https://twitter.com/DesignedByBlind/"&gt;Artur Ortega&lt;/a&gt; entwickelte, suchten wir nach existierenden Javascript Tabs die Artur mit seinem Screenreader tatsächlich bedienen kann. Wir gaben die Suche irgendwann auf.&lt;/p&gt;&lt;p&gt;Das Problem, dass selbst die besseren Scripts haben, ist die Fehlende Rückmeldung an den Nutzer, dass tatsächlich etwas Passiert. Die meisten Tabs Scripts ändern das Aussehen der Tabs und die Sichtbarkeit der zugehörigen Inhalte aber lassen den Nutzer da zurück wo er war - auf dem Tab auf den geklickt wurde - ohne Ahnung was gerade passiert ist (vergleichbar mit einem Klick auf die immer noch viel zu beliebten "Blinden Links" (a href="#")).&lt;/p&gt;&lt;p&gt;Das ist auch genau der große Unterschied den dieses Script macht. Während das Verhalten für Nutzer ohne Sehbehinderung exakt die gleiche ist passiert sehr viel unter der Haube. Aber erstmal zurück zum Anfang.&lt;/p&gt;&lt;p&gt;jQuery Accessible Tabs benutzt ein sehr einfaches und flexibles HTML Markup als Basis. Alles was es braucht ist ein Wrapper mit Headlines und Inhalts-Elementen nacheinander. Die einfachste und bestmöglichste Alternative ohne Javascript ohne Auszusehen als würde etwas fehlen oder etwas währe kaputt.&lt;/p&gt;&lt;div class="html4strict" style="text-align: left"&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"tabs"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;&lt;/span&gt;eine Beispielüberschrift&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"tabbody"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;&lt;/span&gt;Lorem ipsum&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Nullam malesuada suscipit pede. Nullam ipsum lacus, varius&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;&lt;/span&gt;noch eine Beispielüberschrift&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"tabbody"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Integer tincidunt. Cras dapibus. Vivamus elementum nisi.&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel.&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;&lt;/span&gt;alles andere&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"tabbody"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Hier könnte Ihr Inhalt stehen&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;p&gt;Ein einfacher jQuery Aufruf transformiert das Markup in accessible Tabs:&lt;/p&gt;
&lt;div class="javascript" style="text-align: left"&gt;&lt;br /&gt;&amp;#160; &amp;#160; $&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;document&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;ready&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'.tabs'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;accessibleTabs&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;p&gt;Um nicht nur so zugänglich sondern auch so flexibel wie möglich zu sein, kann das Script mit verschiedensten Einstellmöglichkeiten konfiguriert werden.&lt;/p&gt;
&lt;div class="javascript" style="text-align: left"&gt;&lt;br /&gt;$&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'.tabs'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;accessibleTabs&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Der Name der Klasse die dem Div zugewiesen &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// welche um das Markup herumgeschrieben wird&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; wrapperClass: &lt;span style="color: #3366CC;"&gt;'content'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Der Name der Klasse die das aktuelle Tab markiert&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; currentClass: &lt;span style="color: #3366CC;"&gt;'current'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Tag oder valider Query Selector der Elemente&amp;#160; &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// aus denen die Tabs Navigation erzeugt wird &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// (die Originale werden entfernt)&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; tabhead: &lt;span style="color: #3366CC;"&gt;'h4'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Tag oder valider Query Selector der Elemente die &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// als Inhalte der Tabs genutzt werden sollen&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; tabbody: &lt;span style="color: #3366CC;"&gt;'.tabbody'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Anzeigeeffekte:&amp;#160; 'fadeIn', 'slideDown' oder 'show'&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; fx:&lt;span style="color: #3366CC;"&gt;'show'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Geschwindigkeit (String|Number): 'slow', 'normal', oder 'fast') &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// oder die Milisekunden die die Anzeigeeffekte dauern sollen&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; fxspeed: &lt;span style="color: #3366CC;"&gt;'normal'&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Text um Screenreadern anzuzeigen welches der ausgewählte Tab ist &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; currentInfoText: &lt;span style="color: #3366CC;"&gt;'current tab: '&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Definition wo der Text eingefügt wird&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Entwender 'prepend' oder 'append'&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; currentInfoPosition: &lt;span style="color: #3366CC;"&gt;'prepend'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Klasse des span mit dem Infotext&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; currentInfoClass: &lt;span style="color: #3366CC;"&gt;'current-info'&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;h4&gt;Also gut, warum ist dieses Script zugänglicher als andere?&lt;/h4&gt;&lt;p&gt;Das, was dieses Script hauptsächlich besser macht als die anderen ist ein Feedback für Nutzer von Screenreadern nach dem Klick. Wenn der Nutzer auf einen der Tabs klickt wird tatsächlich auf der Seite navigiert.&lt;/p&gt;&lt;p&gt;Jeder Link in den Tabs führt tatsächlich zu einem fokusierbaren Inhalt. Um dies zu ermöglichen, erzeugen wir einen benannten Anker in dem zugehörigen Inhalt des Tabs. Dieser Anker, da er keine href-Egenschaft hat, kann von Haus aus aber keinen Fokus erhalten. Um dies zu ermöglichen wird ihm die Eigenschaft tabindex="0" zugewiesen. Warum 0? Weil ein Tabindex von 0 nicht die natürliche Tabordnung des Dokumentes verändert aber dem zugewiesenen Element trotzdem ermöglicht Tab-Fokus zu bekommen.&lt;/p&gt;
&lt;div class="html4strict" style="text-align: left"&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h4&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;a&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"accessibletabscontent"&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"accessibletabscontent"&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"accessibletabsanchor"&lt;/span&gt; &lt;span style="color: #000066;"&gt;tabindex&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"0"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Eine Beispielüberschrift&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h4&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;p&gt;In dem benannten Anker wird der selbe Text wie im Tab eingefügt welches gerade geklickt wurde und das ganze mit einer Headline umklammert. Dies stellt eine sehr angenehme Erfahrung für die Nutzer von Screenreadern dar, da es auf nette Art und Weise bestätigt, dass man gerade zu einem anderen Inhalt auf der Seite gesprungen ist.&lt;/p&gt;&lt;p&gt;Ein weiteres Zusatzfeature für Screenreader Nutzer ist ein kleiner Text der auf den aktuell ausgewählten Tab kennzeichnet. Standardmäßig lautet dieser Text "current tab: " gefolgt von dem Standardtext des Tabs. Dieser Text, ebenso wie seine Position (entweder davor oder danach) ist aber sehr leicht internationalisierbar.&lt;/p&gt;&lt;h4&gt;Problem: Das Fokussieren von versteckten oder eben noch versteckt gewesenen Elementen&lt;/h4&gt;&lt;p&gt;Während dem Testen der Tabs stießen wir auf ein sehr interessantes und ebenso störendes Verhalten des Screenreaders Jaws (und sehr wahrscheinlich auch von anderen). Wir wollten auf die Headline in dem Inhaltselement eines Tabs fokussieren nachdem es eingeblendet wurde. Bei jedem Test war der Screenreader nicht in der Lage das entsprechende Element zu finden und sprach statt dessen um Ende des Dokumentes oder einer anderen zufälligen Position. Dieses Phänomen wird durch den virtuellen Buffer des Screenreaders verursacht, einer internen Kopie des DOMs in dem der Screenreader navigiert. Der virtuelle Buffer gleicht seinen Inhalt regelmäßig mit dem DOM des Browsers ab aber dies ist stets erst nach einer Verzögerung.&lt;/p&gt;&lt;p&gt;Um um dieses Problem herum zu arbeiten nutzen wir einen anderen Lösungsansatz. Der benannte Anker auf den wir verlinken ist tatsächlich nicht in dem versteckten Inhaltselement sondern im DOM davor und "offscreen" (position:absolute;left:-999em) versteckt. Tatsächlich zeigt jeder Tab auf den exakt selben Anker. Wir schreiben den Inhalt des Headline-Elementes einfach jedes mal neu und blenden das zugehörige Inhaltselement entsprechend ein oder aus. Das empfundene Verhalten ist genau das gleiche. Der Screenreader Nutzer klickt auf den Tab, folgt dem Link und findet den verlinkten Inhalt mit der entsprechenden Headline.&lt;/p&gt;&lt;p&gt;Man kann sich das Script hier in &lt;a title="Accessible Tabs simple Demo" href="https://blog.ginader.de/dev/jquery/tabs/1.0/simple.php"&gt;einer einfachen Version&lt;/a&gt; und &lt;a title="Accessible Tabs YAML Demo" href="https://blog.ginader.de/dev/jquery/tabs/1.0/index.php"&gt;hier in einer YAML Umgebung&lt;/a&gt; in Aktion ansehen. Das jQuery Plugin wird ebenfalls Teil der kommenden Version 3.1.1 des &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.yaml.de/');" title="YAMl CSS Framework" href="http://www.yaml.de/"&gt;CSS Framework Yaml&lt;/a&gt; sein.&lt;/p&gt;&lt;p&gt;Man kann das&lt;a onclick="javascript: pageTracker._trackPageview('/download/dev/jquery/tabs/1.0/jquery_accessible_tabs.1.0.zip');" title="Download Accessible jQuery Tabs" href="https://blog.ginader.de/dev/jquery/tabs/1.0/jquery_accessible_tabs.1.0.zip"&gt; script zusammen mit den demos hier herunterladen&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;
        &lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 07 Feb 2009 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/213-guid.html</guid>
    
</item>
<item>
    <title>jQuery Accessible Tabs - How to make tabs REALLY accessible</title>
    <link>index.php?/archives/223-jQuery-Accessible-Tabs-How-to-make-tabs-REALLY-accessible.html</link>
    
    <comments>index.php?/archives/223-jQuery-Accessible-Tabs-How-to-make-tabs-REALLY-accessible.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=223</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=223</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    While a lot of Tabs-Scripts claim to be accessible it turns out, most of them are really not. While developing this jQuery Plugin with my coworker &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/twitter.com/DesignedByBlind/');" href="https://twitter.com/DesignedByBlind/"&gt;Artur Ortega&lt;/a&gt;, we tried to find a single existing Javascript powered Tabs-Interface that Artur, using his Screenreader, would actually be able to use properly. We eventually gave up the search.&lt;p&gt;The one Problem even the better ones have is the missing Feedback of the content change. Most of the tabs scripts change the style of the tabs and the visibility of their corresponding content but leave the user just where he was - on the tab-link - not knowing that something happened (just like clicking on a, ever so popular, inactive link (a href="#")).&lt;/p&gt;&lt;p&gt;This is also the big difference this Script makes. While the user experience for users without visual impairment is exactly the same, there's a lot happening under the hood. But let's start from the beginning.&lt;/p&gt;&lt;p&gt;jQuery Accessible Tabs uses a very simple and flexible HTML markup as it's base to build upon. All it needs it's a wrapper containing Headlines and content elements one after the other. This provides a nice non-javascript fallback that does not look like something is missing or broken.&lt;/p&gt;
&lt;div class="html4strict" style="text-align: left"&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"tabs"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;&lt;/span&gt;some dummy headline&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"tabbody"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;&lt;/span&gt;Lorem ipsum&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Nullam malesuada suscipit pede. Nullam ipsum lacus, varius&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;&lt;/span&gt;another dummy headline&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"tabbody"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Integer tincidunt. Cras dapibus. Vivamus elementum nisi.&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel.&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;&lt;/span&gt;anything else&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"tabbody"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/span&gt;Here could be your content&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;p&gt;A simple jQuery call then transforms this to the accessible Tabs:&lt;/p&gt;
&lt;div class="javascript" style="text-align: left"&gt;&lt;br /&gt;&amp;#160; &amp;#160; $&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;document&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;ready&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'.tabs'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;accessibleTabs&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;p&gt;To not only be accessible but also to be as flexible as possible the script allows configurations to be passed to.&lt;/p&gt;
&lt;div class="javascript" style="text-align: left"&gt;&lt;br /&gt;$&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'.tabs'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;accessibleTabs&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Classname to apply to the div that is wrapped around &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// the original Markup&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; wrapperClass: &lt;span style="color: #3366CC;"&gt;'content'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Classname to apply to the LI of the selected Tab&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; currentClass: &lt;span style="color: #3366CC;"&gt;'current'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Tag or valid Query Selector of the Elements to Transform the &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Tabs-Navigation from (originals are removed)&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; tabhead: &lt;span style="color: #3366CC;"&gt;'h4'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Tag or valid Query Selector of the Elements to be treated as &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// the Tab Body&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; tabbody: &lt;span style="color: #3366CC;"&gt;'.tabbody'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// can be 'fadeIn', 'slideDown', 'show'&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; fx:&lt;span style="color: #3366CC;"&gt;'show'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// speed (String|Number): 'slow', 'normal', or 'fast') or the number of &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// milliseconds to run the animation&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; fxspeed: &lt;span style="color: #3366CC;"&gt;'normal'&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// text to indicate for screenreaders which tab is the current one &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; currentInfoText: &lt;span style="color: #3366CC;"&gt;'current tab: '&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Definition where to insert the Info Text.&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Can be either 'prepend' or 'append'&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; currentInfoPosition: &lt;span style="color: #3366CC;"&gt;'prepend'&lt;/span&gt;, &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900; font-style: italic;"&gt;// Class to apply to the span wrapping the CurrentInfoText&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; currentInfoClass: &lt;span style="color: #3366CC;"&gt;'current-info'&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;h4&gt;So, why is this Tabs-Script more accessible than others?&lt;/h4&gt;&lt;p&gt;The main thing this Script does better than the others is providing a click feedback for Screenreader Users. When the user clicks on one of the tabs there's actually a navigation going on on the page. &lt;/p&gt;&lt;p&gt;Every link in the tabs is pointing to an actually focusable content. To allow this, we create a named anchor inside of the tabs content. This anchor, as it has no href property, is not focusable by default though. To make it focusable we gave it a tabindex="0". Why 0? Because a tabindex of 0 does not change the natural tab flow of the page but it makes an element focusable which is not able to receive focus by default. &lt;/p&gt;
&lt;div class="html4strict" style="text-align: left"&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h4&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;a&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"accessibletabscontent"&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"accessibletabscontent"&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"accessibletabsanchor"&lt;/span&gt; &lt;span style="color: #000066;"&gt;tabindex&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"0"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; some dummy headline&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h4&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;p&gt;Inside of the named anchor we add the same text as the tab that was just clicked and wrapped it into a headline element. This provides a very nice user experience for screenreader users, as it nicely confirms that you actually jumped into a new content of the page.&lt;/p&gt;&lt;p&gt;The other thing that adds benefit for screenreader users is a little text that indicates the currently selected tab. It defaults to "current tab: " followed by the default text of the tab. For internationalisation reasons this text as well as the text position (either before or after) can easily be configured.&lt;/p&gt;&lt;h4&gt;Problem: Focussing hidden or recently hidden Elements&lt;/h4&gt;&lt;p&gt;During the testing of the tabs we discovered a very interesting, yet very annoying, behaviour of the Screenreader Jaws (and probably others too). We wanted to focus the headline in the content of the current tab after clicking the tab which made the content visible. Everytime we tested, the Screenreader was unable to find the element to focus on and simply jumped to the end of the page or randomly somewhere else. We discovered that this is only happening when the focus target was recently hidden. This phenomenon is caused by the screenreaders virtual buffer, an internal copy of the actual DOM in which the Screenreader user navigates. The virtual buffer does regularly update itself from the Browser DOM but there's always a delay.&lt;/p&gt;&lt;p&gt;To work around this issue we used a different approach. The named anchor we're linking to is not actually in the hidden tab content but before it in the DOM of all of the contents and hidden offscreen. Also actually every link in the tabs is pointing to the same anchor. We're simply dynamically rewriting the headline text on the fly and show and hide the contents accordingly. The user experience is just the same. The screenreader user clicks on the tab, follows the link and finds the linked content starting with a corresponding headline.&lt;/p&gt;&lt;p&gt;You can see the script in action in &lt;a href="https://blog.ginader.de/dev/jquery/tabs/1.0/simple.php" title="Accessible Tabs simple Demo"&gt;a simple version&lt;/a&gt; here and &lt;a href="https://blog.ginader.de/dev/jquery/tabs/1.0/index.php" title="Accessible Tabs YAML Demo"&gt;in a Yaml environment&lt;/a&gt; here. This plugin will also be part of the &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.yaml.de/');" href="http://www.yaml.de/" title="YAMl CSS Framework"&gt;The CSS Framework Yaml&lt;/a&gt; in its upcoming version 3.1.1.&lt;/p&gt;&lt;p&gt;You can&lt;a onclick="javascript: pageTracker._trackPageview('/download/dev/jquery/tabs/1.0/jquery_accessible_tabs.1.0.zip');" href="https://blog.ginader.de/dev/jquery/tabs/1.0/jquery_accessible_tabs.1.0.zip" title="Download Accessible jQuery Tabs"&gt; download the script including the demos here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;
        &lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 07 Feb 2009 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/223-guid.html</guid>
    
</item>
<item>
    <title>CSS Voodoo - The dark art of CSS Hacks</title>
    <link>index.php?/archives/214-CSS-Voodoo-The-dark-art-of-CSS-Hacks.html</link>
    
    <comments>index.php?/archives/214-CSS-Voodoo-The-dark-art-of-CSS-Hacks.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=214</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=214</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;CSS Hacks are something one doesn't talk about in the public. Developers are ashamed of using them. They are bad, they are evil and you really shouldn't use them at all...&lt;/p&gt;&lt;p&gt;...but sometimes there's simply no other way - and then you sell your soul to the hack-devil...&lt;/p&gt;&lt;p&gt;Since I joined Yahoo! I stopped using Conditional Comments for Performance Reasons (less HTTP Requests). So I needed to get familiar again with the common Hacks for Internet Explorer I had completely forgotten about.&lt;/p&gt;&lt;p&gt;Over time I hardly ever ran into situations when other Browsers misbehaved - but it did happen (after all they are all just software and as we all know there is no software without Bugs...).&lt;/p&gt;&lt;p&gt;So following you'll find the current State of my CSS Hack Collection. You can see them in action on my &lt;a href="https://blog.ginader.de/dev/css/hacks/index.php"&gt;CSS Hacks Example page&lt;/a&gt;. Please use with caution and do yourself the favour and try ANYTHING else BEFORE you capitulate and use them!&lt;/p&gt;&lt;p&gt;In my Demo I have Paragraphs containing the names of the targeted Browsers and hide them by default.&lt;/p&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &lt;br /&gt;body p &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;none&lt;/span&gt;; &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;p&gt;Then I use the Browser specific Hacks to make the Browser names visible again:&lt;/p&gt;&lt;h4&gt;Internet Explorer&lt;/h4&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&lt;span style="color: #808080; font-style: italic;"&gt;/* IE 6 only */&lt;/span&gt; &lt;br /&gt;body &lt;span style="color: #cc00cc;"&gt;#ie6 &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;_display: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/*IE 6 and IE 7 */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc00cc;"&gt;#ie6andie7 &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;*&lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/* IE 7 only */&lt;/span&gt; &lt;br /&gt;html &amp;gt; body &lt;span style="color: #cc00cc;"&gt;#ie7 &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; *&lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;


&lt;h4&gt;Firefox&lt;/h4&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/*Firefox 2 and 3 */&lt;/span&gt;&lt;br /&gt;#firefox2, x&lt;span style="color: #3333ff;"&gt;:-moz-any-link &lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; *&lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;none&lt;/span&gt;; &lt;span style="color: #808080; font-style: italic;"&gt;/*overrule for ie6 and ie7 which also read this rule*/&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/*Firefox 3 only (for Firefox 2 only use the rule above and this to overwrite for Firefox 3*/&lt;/span&gt;&lt;br /&gt;#firefox3, x:-moz-any-link, x&lt;span style="color: #3333ff;"&gt;:&lt;span style="color: #993333;"&gt;default&lt;/span&gt; &lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; *&lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;none&lt;/span&gt;; &lt;span style="color: #808080; font-style: italic;"&gt;/*overrule for ie6 and ie7 which also read this rule*/&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;h4&gt;Safari&lt;/h4&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/* Safari */&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #a1a100;"&gt;@media screen and (-webkit-min-device-pixel-ratio:0) { &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #cc00cc;"&gt;#safari &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;h4&gt;Opera&lt;/h4&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/* Opera */&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #a1a100;"&gt;@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; head~body &lt;span style="color: #cc00cc;"&gt;#opera &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;p&gt;Alright - now I feel dirty and go have a shower...&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 01 Feb 2009 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/214-guid.html</guid>
    
</item>
<item>
    <title>CSS Voodoo - Die dunke Kunst der CSS Hacks</title>
    <link>index.php?/archives/225-CSS-Voodoo-Die-dunke-Kunst-der-CSS-Hacks.html</link>
    
    <comments>index.php?/archives/225-CSS-Voodoo-Die-dunke-Kunst-der-CSS-Hacks.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=225</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=225</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;CSS Hacks sind etwas über daß man nur hinter verschlossenen Türen redet. Entwickler schämen sich sie zu benutzten. Sie sind schlecht, sie sind böse und man sollte sie wirklich überhaupt nicht benutzen...&lt;/p&gt;&lt;p&gt;... aber manchmal gibt es einfach keinen anderen weg - und dann verkauft man seine Seele and den Hack-Teufel...&lt;/p&gt;&lt;p&gt;Seit ich angefangen habe bei Yahoo! zu arbeiten habe ich aus Performance Gründen (weniger HTTP Abfragen) aufgehört Conditional Comments zu benutzen. Ich musste mich also plötzlich wieder mit den üblichen Hacks für Internet Explorer vertraut machen die ich schon völlig vergessen hatte.&lt;/p&gt;&lt;p&gt;Seither bin ich fast nie in Situationen geraten in denen sich auch andere Browser schlecht benommen hätten - aber es kam vor (immerhin sind sie alle nur Software und, wie wir alle wissen, gibt es keine Software ohne Bugs...).&lt;/p&gt;&lt;p&gt;Es folgt der aktuelle Stand meiner CSS Hack Sammlung. Man kann sich eine funktionierende Demo auf meiner &lt;a href="https://blog.ginader.de/dev/css/hacks/index.php"&gt;CSS Hacks Beispielseite&lt;/a&gt; anschauen. Bitte nur mit besondere Vorsicht benutzen und tu dir selb st den Gefallen und probier ALLES ERDENKLICHE BEVOR du aufgiebst und sie selber benutzt.&lt;/p&gt;&lt;p&gt;In meiner Demo habe ich Absätze, die den Namen der Browser enthalten, die mit den Hacks angesprochen werden können, standardmäßig ausgeblendet. &lt;/p&gt;&lt;div class="css" style="text-align: left"&gt;&amp;#160; &lt;br /&gt;body p &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;none&lt;/span&gt;; &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;p&gt;Dann benuze ich die Browser spezifischen Hacks um die jeweiligen Browsernamen wieder sichtbar zu machen:&lt;/p&gt;&lt;h4&gt;Internet Explorer&lt;/h4&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&lt;span style="color: #808080; font-style: italic;"&gt;/* IE 6 only */&lt;/span&gt; &lt;br /&gt;body &lt;span style="color: #cc00cc;"&gt;#ie6 &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;_display: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/*IE 6 and IE 7 */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc00cc;"&gt;#ie6andie7 &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;*&lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/* IE 7 only */&lt;/span&gt; &lt;br /&gt;html &amp;gt; body &lt;span style="color: #cc00cc;"&gt;#ie7 &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; *&lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;


&lt;h4&gt;Firefox&lt;/h4&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &lt;br /&gt;#firefox2, x&lt;span style="color: #3333ff;"&gt;:-moz-any-link &lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; *&lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;none&lt;/span&gt;; &lt;span style="color: #808080; font-style: italic;"&gt;/*overrule for ie6 and ie7 which also read this rule*/&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/*Firefox 3 only (for Firefox 2 only use the rule above and this to overwrite for Firefox 3*/&lt;/span&gt;&lt;br /&gt;#firefox3, x:-moz-any-link, x&lt;span style="color: #3333ff;"&gt;:&lt;span style="color: #993333;"&gt;default&lt;/span&gt; &lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; *&lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;none&lt;/span&gt;; &lt;span style="color: #808080; font-style: italic;"&gt;/*overrule for ie6 and ie7 which also read this rule*/&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;h4&gt;Safari&lt;/h4&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/* Safari */&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #a1a100;"&gt;@media screen and (-webkit-min-device-pixel-ratio:0) { &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #cc00cc;"&gt;#safari &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;h4&gt;Opera&lt;/h4&gt;
&lt;div class="css" style="text-align: left"&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;br /&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/* Opera */&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #a1a100;"&gt;@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { &lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; head~body &lt;span style="color: #cc00cc;"&gt;#opera &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style="color: #000000; font-weight: bold;"&gt;display&lt;/span&gt;: &lt;span style="color: #993333;"&gt;block&lt;/span&gt;; &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;p&gt;So - jetzt fühle ich mich schmutzig und gehe duschen...&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 01 Feb 2009 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/225-guid.html</guid>
    
</item>
<item>
    <title>Barcamp London 6 - I'm one of the Organizers</title>
    <link>index.php?/archives/222-Barcamp-London-6-Im-one-of-the-Organizers.html</link>
    
    <comments>index.php?/archives/222-Barcamp-London-6-Im-one-of-the-Organizers.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=222</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=222</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;After, believe it or not, 7 Barcamps as a participant it's now time to give back some of my experiences and "wisdom".&lt;/p&gt;&lt;p&gt;Teamed up with some of the &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.barcamplondon.org/about/');" href="http://www.barcamplondon.org/about/"&gt;other usual Barcamp suspects&lt;/a&gt; I organized the upcoming &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.barcamplondon.org/');" href="http://www.barcamplondon.org/"&gt;Barcamp London 6&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;After we finally got the venue confirmation of&amp;#160;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.guardian.co.uk/');" href="http://www.guardian.co.uk/"&gt;the Guardian&lt;/a&gt; yesterday here's the official annoucement:&lt;/p&gt;&lt;p&gt;&lt;!-- s9ymdb:303 --&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.barcamplondon.org/');" href="http://www.barcamplondon.org/"&gt;&lt;img width="460" height="150" class="serendipity_image_center" style="border: 0px none ; padding-left: 5px; padding-right: 5px;" src="https://blog.ginader.de/uploads/pics/barcamplondon6.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;28 - 29 March 2009 the 6th London Barcamp will happen in the gorgeous new building of the Guardian.&lt;/p&gt;&lt;p&gt;In 2 weeks time the first ticket wave will be released (exact day and time will be announced). To avoid missing this important date you better follow us on&amp;#160;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/twitter.com/barcamplondon/');" href="http://twitter.com/barcamplondon/"&gt;twitter&lt;/a&gt;, subscribe to the reminder on the &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.barcamplondon.org/');" href="http://www.barcamplondon.org/"&gt;website&lt;/a&gt; and check into&amp;#160;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/upcoming.yahoo.com/event/1746039/');" href="http://upcoming.yahoo.com/event/1746039/"&gt;Upcoming&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 31 Jan 2009 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/222-guid.html</guid>
    
</item>
<item>
    <title>Barcamp London 6 - ich bin im Orga-Team</title>
    <link>index.php?/archives/224-Barcamp-London-6-ich-bin-im-Orga-Team.html</link>
    
    <comments>index.php?/archives/224-Barcamp-London-6-ich-bin-im-Orga-Team.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=224</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=224</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;Nach, sage und schreibe, 7 Barcamps als Teilnehmer ist es an der Zeit meine gesammelte "Erfahrung" und "Weisheit" einzusetzen.&lt;/p&gt;&lt;p&gt;Zusammen mit einigen anderen der &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.barcamplondon.org/about/');" href="http://www.barcamplondon.org/about/"&gt;üblichen Barcamp-Verdächtigen&lt;/a&gt; habe ich das kommende &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.barcamplondon.org/');" href="http://www.barcamplondon.org/"&gt;Barcamp London 6&lt;/a&gt; organisiert.&lt;/p&gt;&lt;p&gt;Nachdem wir gestern endlich die finale Zusage von &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.guardian.co.uk/');" href="http://www.guardian.co.uk/"&gt;the Guardian&lt;/a&gt; als location bekommen haben gibt es jetzt endlich die offizielle Ankündigung:&lt;/p&gt;&lt;p&gt;&lt;!-- s9ymdb:303 --&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.barcamplondon.org/');" href="http://www.barcamplondon.org/"&gt;&lt;img width="460" height="150" src="uploads/pics/barcamplondon6.png" style="border: 0px none ; padding-left: 5px; padding-right: 5px;" class="serendipity_image_center"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Vom 28. - 29. März 2009 findet in den schicken neuen Räumen der Zeitung the Guardian das sechste Londonder Barcamp statt.&lt;/p&gt;&lt;p&gt;In 2 Wochen werden schon die ersten Tickets vergeben (genauer Tag und Uhrzeit werden noch bekannt gegeben). Damit Ihr diesen wichtigen Termin nicht verpasst, folgt uns auf &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/twitter.com/barcamplondon/');" href="http://twitter.com/barcamplondon/"&gt;twitter&lt;/a&gt;, tragt euch in den Reminder auf der &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.barcamplondon.org/');" href="http://www.barcamplondon.org/"&gt;Website&lt;/a&gt; ein, macht euer Häkchen bei &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/upcoming.yahoo.com/event/1746039/');" href="http://upcoming.yahoo.com/event/1746039/"&gt;Upcoming&lt;/a&gt; und und und...&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 31 Jan 2009 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/224-guid.html</guid>
    
</item>
<item>
    <title>Yahoo! Currency Converter - mein Lieblingsprojekt ist live</title>
    <link>index.php?/archives/220-Yahoo!-Currency-Converter-mein-Lieblingsprojekt-ist-live.html</link>
    
    <comments>index.php?/archives/220-Yahoo!-Currency-Converter-mein-Lieblingsprojekt-ist-live.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=220</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=220</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;&lt;a rel="lightbox" href="https://blog.ginader.de/uploads/pics/currency-converter.png" class="serendipity_image_link"&gt;&lt;!-- s9ymdb:299 --&gt;&lt;img width="110" height="104" src="https://blog.ginader.de/uploads/pics/currency-converter.serendipityThumb.png" style="border: 0px none ; float: left; padding-left: 5px; padding-right: 5px;" class="serendipity_image_left"&gt;&lt;/a&gt;Vor ca. einem 3/4 Jahr entwickelten mein Kollege, der User Experience Designer &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.holdandmodify.com/');" href="http://www.holdandmodify.com/"&gt;Graham Beale&lt;/a&gt;, und ich Ideen für einen Prototype eines neuen Währungsumrechners für den weltweiten Relaunch von Yahoo! Finance. Wir wollten Features die wir so noch nirgends im Internet gesehen hatten. Wir wollten Konvertierung ohne Reload, eine Suche nach Währungsnamen wie in der Firefox 3 "awesome bar", totale Barrierefreiheit, noch viel mehr und das alles natürlich in Echtzeit.&lt;/p&gt;&lt;p&gt;Knapp ein Jahr, viele Usertests, viele neue Ideen, viel Screenreader testing mit meinem Kollegen &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/twitter.com/DesignedByBlind');" href="http://twitter.com/DesignedByBlind"&gt;Artur Ortega&lt;/a&gt; und sehr viel Entwicklungszeit später ist gestern nacht das Ergebnis online gegangen!&lt;/p&gt;&lt;p&gt;Über die vielen Screenreader spezifischen Tricks die wir hierfür angewand und zum grossen Teil neu entwickelt haben muss ich unbedingt noch gesondert Bloggen. Bis dahin wünsche ich viel Spaß mit dem neuen &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/finance.yahoo.com/currency-converter');" href="http://finance.yahoo.com/currency-converter"&gt;Yahoo! Currency Converter&lt;/a&gt; und empfehle einfach mal die Anwendung nur mit der Tastatur zu bedienen, Javascript mal ganz auszuschalten oder natürlich einfach mit der tollen Währungs-Suchfunktion zu spielen &lt;img src="https://blog.ginader.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon"&gt;.&lt;/p&gt;&lt;p&gt;
        &lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 17 Dec 2008 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/220-guid.html</guid>
    
</item>
<item>
    <title>Yahoo! Currency Converter - my favorite project is now live</title>
    <link>index.php?/archives/221-Yahoo!-Currency-Converter-my-favorite-project-is-now-live.html</link>
    
    <comments>index.php?/archives/221-Yahoo!-Currency-Converter-my-favorite-project-is-now-live.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=221</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=221</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;&lt;a class="serendipity_image_link" rel="lightbox" href="https://blog.ginader.de/uploads/pics/currency-converter.png"&gt;&lt;!-- s9ymdb:299 --&gt;&lt;img width="110" height="104" class="serendipity_image_left" style="border: 0px none ; float: left; padding-left: 5px; padding-right: 5px;" src="https://blog.ginader.de/uploads/pics/currency-converter.serendipityThumb.png"&gt;&lt;/a&gt;About 9 months ago my fellow co-worker, the User Experience Designer &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/www.holdandmodify.com/');" href="http://www.holdandmodify.com/"&gt;Graham Beale&lt;/a&gt;, and I started developing ideas for a prototype of a new Currency Converter for the worldwide relaunch of Yahoo! Finance.&lt;/p&gt;&lt;p&gt;We wanted Features we haven't seen like this in the Internet so far. We wanted conversion without a page reload, searching for currencies like in the Firefox 3 "awesome bar", total accessibility, much more and of course everything in realtime.&lt;/p&gt;&lt;p&gt;About a year, many user tests, many new ideas, a lot of Screenreader testing with my fellow co-worker &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/twitter.com/DesignedByBlind');" href="http://twitter.com/DesignedByBlind"&gt;Artur Ortega&lt;/a&gt; and even more time developing, the result went online yesterday night!&lt;/p&gt;&lt;p&gt;I need to blog about the many Screenreader specific tricks, we used and for a large part also created for this, separately. Until then I wish you lots of fun with the brand new &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/finance.yahoo.com/currency-converter');" href="http://finance.yahoo.com/currency-converter"&gt;Yahoo! Currency Converter&lt;/a&gt; and suggest to use the App at one point only using the Keyboard, switch of Javascript or just play with the neat Currency Search &lt;img src="https://blog.ginader.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon"&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 17 Dec 2008 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/221-guid.html</guid>
    
</item>
<item>
    <title>Technikwürze feiert 3 Jahre Pfeffer im Ohr - ich feiere mit</title>
    <link>index.php?/archives/219-Technikwuerze-feiert-3-Jahre-Pfeffer-im-Ohr-ich-feiere-mit.html</link>
    
    <comments>index.php?/archives/219-Technikwuerze-feiert-3-Jahre-Pfeffer-im-Ohr-ich-feiere-mit.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=219</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=219</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;&lt;!-- s9ymdb:298 --&gt;&lt;a onclick="javascript: pageTracker._trackPageview('/extlink/technikwuerze.de/podcast/technikwuerze126/');" href="http://technikwuerze.de/podcast/technikwuerze126/"&gt;&lt;img width="180" height="180" class="serendipity_image_left" style="border: 0px none ; float: left; padding-left: 5px; padding-right: 5px;" src="https://blog.ginader.de/uploads/technikwuerze126.png"&gt;&lt;/a&gt;Gestern feierten David Maciejewski Stefan Nitzsche, Sascha Postner und ich das 3-jährige Jubiläum des &lt;a onclick="javascript: pageTracker._trackPageview('/extlink/technikwuerze.de/podcast/technikwuerze126/');" href="http://technikwuerze.de/podcast/technikwuerze126/"&gt;wichtigsten deutschen Webstandards Podcasts Technikwürze&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Die Sendung schaffte es schon in den ersten Minuten das humoristische Niveau der folgenden 82:57 Minuten gnadenlos festzulegen sodass ich, als ich heute morgen in der Tube saß, immer wieder von meinen Mitfahrern schräg angeschaut wurde, da ich konstant kichernd und grinsend meinem iPod lauschte &lt;img src="https://blog.ginader.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon"&gt;&lt;/p&gt;&lt;p&gt;Meine Tonqualität war zwar leider sehr bescheiden (man hört quasi die den Ärmelkanal rauschen... &lt;img src="https://blog.ginader.de/templates/default/img/emoticons/wink.png" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon"&gt;) aber Spaß hat es trotzdem gemacht. &lt;/p&gt;&lt;p&gt;Reinhören!&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 16 Dec 2008 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/219-guid.html</guid>
    
</item>
<item>
    <title>OMG! web output finally has it's own design!</title>
    <link>index.php?/archives/217-OMG!-web-output-finally-has-its-own-design!.html</link>
    
    <comments>index.php?/archives/217-OMG!-web-output-finally-has-its-own-design!.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=217</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=217</wfw:commentRss>
    

    <author>nospam@example.com (Dirk Ginader)</author>
    <content:encoded>
    &lt;p&gt;&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;I&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;really&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;didn&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;'&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;t&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;expect&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;this&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;myself&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;More&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;than&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;a&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;year&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;ago&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;I&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;already&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;had&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;a&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;design&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;idea&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;and&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;did&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;a&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;mockup&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;in&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Fireworks&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;. &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;A&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;working&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;HTML&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Dummy&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;was&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;quickly&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;done&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;. &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Then&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;I&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;had&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;a&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;look&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;into&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;how&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;to&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;build&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Templates&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;in&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Serendipity&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; (&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;the&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Software&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;used&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;for&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;this&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;blog&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;) &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;and&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;instantly&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;lost&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;any&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;interest&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;in&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;ever&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;finishing&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;this&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Serendipitously&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;the&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;old&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Design&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;was&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;so&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;incredibly&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;ugly&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;and&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;the&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Code&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;so&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;painfully&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;invalid&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;that&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;the&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;few&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;times&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;I&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;had&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;so&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;see&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;it&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;myself&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;made&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;me&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;being&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;so&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;ashamed&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;of&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;it&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;that&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;I&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;eventually&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;had&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;a&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Sunday&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;full&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;of&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Smarty&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; (&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;the&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Template&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;engine&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;used&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;in&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Serendipity&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;) &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;and&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;tadaaaaaaaaaaa&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;:&lt;/p&gt;&lt;p&gt;&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;The&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;new&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;Design&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;actually&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;was&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;actually&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt; &lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;launched&lt;span class="serendipity_searchQuery"&gt;&lt;/span&gt;!&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 14 Dec 2008 00:00:00 +0000</pubDate>
    <guid isPermaLink="false">index.php?/archives/217-guid.html</guid>
    
</item>

</channel>
</rss>