<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Thomas Horster &#187; Frontendentwicklung</title> <atom:link href="http://tom.kulturlounge.de/blog/category/frontendentwicklung/feed/" rel="self" type="application/rss+xml" /><link>http://tom.kulturlounge.de/blog</link> <description>eat the cookie before the cookie eats you</description> <lastBuildDate>Mon, 22 Aug 2011 20:24:40 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.2.1</generator> <item><title>JavaScript Best-Practices</title><link>http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/</link> <comments>http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/#comments</comments> <pubDate>Mon, 22 Aug 2011 14:00:33 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[best-practices]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[js]]></category> <category><![CDATA[tipps]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=1008</guid> <description><![CDATA[Was sind Best-Practices? Im Grunde sind Best-Practices, grob gesagt, nichts anderes als sinnvolle Problemlösungen, die sich in der Praxis für gängige Aufgaben mehrfach bewährt haben und generell als gute Vorgabe dienen können: http://de.wikipedia.org/wiki/Best_Practice Nicht den globalen Gültigkeitsbereich(Scope) verschmutzen Selbstausführende Funktionen &#8230; <a href="http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/">Weiterlesen <span class="meta-nav">&#8594;</span></a>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/06/04/javascript-miniframework/' rel='bookmark' title='JavaScript Miniframework'>JavaScript Miniframework</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/10/09/douglas-crockford-uber-die-entstehung-von-javascript/' rel='bookmark' title='Douglas Crockford über die Entstehung von JavaScript'>Douglas Crockford über die Entstehung von JavaScript</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/21/sichtbarkeit-eines-elementes-in-javascript-togglen/' rel='bookmark' title='Sichtbarkeit eines Elementes in JavaScript togglen'>Sichtbarkeit eines Elementes in JavaScript togglen</a></li></ol>]]></description> <content:encoded><![CDATA[<h2>Was sind Best-Practices?</h2><p>Im Grunde sind Best-Practices, grob gesagt, nichts anderes als sinnvolle Problemlösungen, die sich in der Praxis für gängige Aufgaben mehrfach bewährt haben und generell als gute Vorgabe dienen können: <a href="http://de.wikipedia.org/wiki/Best_Practice">http://de.wikipedia.org/wiki/Best_Practice</a></p><h2>Nicht den globalen Gültigkeitsbereich(Scope) verschmutzen</h2><pre class="brush: jscript; title: ; notranslate">
// Schlecht: 5 globale Variablen
var key = 'value',
     foo = 'bar',
     charlie = 'horse';

function helper() {
    //hilft aus
}

function info(msg) {
    helper(msg);
    Ti.API.info(msg);
}

//Besser: Global erreichbare Variablen in ein Objekt packen (Namespace)
//Nur einmal benötigte Funktionen in eine selbstausführende Funktion stecken,
//da diese dann nicht global sind bzw. von außen erreichbar

//Die einzige globale Variable ist nun 'myapp'
var myapp = {
    key: 'value',
    foo: 'bar',
    charlie: 'horse'
};

(function() {
    function helper() {
        //hilft aus
    }

    myapp.info = function(msg) {
        helper(msg);
        Ti.API.info(msg)
    };
})();
</pre><p><span id="more-1008"></span></p><h2>Selbstausführende Funktionen in Klammern packen</h2><p>Eine selbstausführende Funktion, ist eine Funktion, die sich schon bei ihrer Deklaration selber ausführt. Variablen und Funktionsdeklarationen aus dieser Funktion, sind außerhalb des Gültigkeitsbereiches nicht erreichbar, was schon im ersten Beispiel ausgenutzt wurde. ["What happens in fight club, stays in fight club"]<br /> Am Anfang ist man vielleicht versucht, diese so zu schreiben:</p><pre class="brush: jscript; title: ; notranslate">
var doIt = function(){
    console.log('didIt');
}();
</pre><p>Obwohl syntaktisch korrekt, wird jemand der diesen Code liest, ihn aber irrtümlich für eine einfache Funktionsdeklaration halten, falls er die Klammern am Ende nicht wahrnimmt. Aus diesem Grund ist es besser, diese Funktionsdeklaration zu klammern:</p><pre class="brush: jscript; title: ; notranslate">
var doIt = (function(){
    console.log('didIt');
})();
</pre><p><a href="http://jslint.com/">JsLint</a> bzw. <a href="http://jshint.com/">JsHint</a> empfehlen hierbei folgende Schreibweise, die <a href="http://stackoverflow.com/questions/3783007/is-there-a-difference-between-function-and-function">aber praktisch keinen Unterschied</a> macht:</p><pre class="brush: jscript; title: ; notranslate">
var doIt = (function(){
    console.log('didIt');
}());
</pre><h2>Benutze === und !== anstatt von == und !=</h2><p>Von manchen auch der &#8220;Vergleiche, verdammt noch mal!&#8221; Operator genannt, macht === im Vergleich zu == einen typsicheren Vergleich. Wenn zwei Operanden gleich sind in Typ und Wert, gibt === true zurück und es ist meistens genau das, was man meint.</p><p>Gegeben sei x=5:</p><pre class="brush: jscript; title: ; notranslate">
var x = 5;

console.log(
    x == 8, //false
    x == &quot;5&quot;, //true
    x === 8, //false
    x === &quot;5&quot;, //false
    x === 5, //true
    true == 1, //true
    null == undefined, //true
    45 == &quot;45&quot;, //true
    NaN == NaN, //false (!)
    typeof NaN //mal so am Rande... <img src='http://tom.kulturlounge.de/blog/wp-includes/images/smilies/icon_smile.gif' alt="icon smile   JavaScript Best Practices" class='wp-smiley' title="JavaScript Best Practices" />
);
</pre><h2>Viele Variablen? Benutze Komma(s)/(ta)!</h2><pre class="brush: jscript; title: ; notranslate">
//schwer lesbar
var foo = true;
var me = 'awesome';

//besser lesbar, weniger Code
var foo = true,
      me = 'human';
</pre><h2>Effiziente Schleifen</h2><p>In manchen Situationen kann das Abfragen der Länge eines Arrays bei jeder Iteration ziemlich lange dauern. for &#8230; in-Schleifen bitte nur bei Objekten verwenden, da diese in vielen Browsern langsamer sind als einfache for- oder while-Schleifen.</p><pre class="brush: jscript; title: ; notranslate">
//wiederholte Abfrage der Arraylänge, besonders langsam bei sehr großen Arrays
var names = ['Annett', 'Rene', 'Robert', 'Tom'];
for( var i = 0; i &gt; names.length; i++ ){
    process( names[i] );
}

//Arraylänge wird nur einmal abgefragt und in einer Variable (j) gespeichert
var names = ['Annett', 'Rene', 'Robert', 'Tom'];
for( var i = 0, j = names.length; i &gt; j; i++ ){
    process( names[i] );
}
</pre><h2>Sehr tiefe Verschachtelungen vermeiden</h2><p>Tiefe Verschachtelungen sind nicht nur schwer zu lesen und zu warten, auch können sie besonders auf mobilen Geräten zu Abbrüchen führen, wenn die <a href="http://de.wikipedia.org/wiki/Rekursion">Rekursion</a> zu hoch wird:</p><pre class="brush: jscript; title: ; notranslate">
var dings = function() {
    var doIt = function() {
        var stuff = function() {
            //noch mehr code in vielen Schleifen
        };
    };
};
</pre><h2>Zusammenfassung</h2><p>Natürlich stellt dieser Artikel nur eine kleine Übersicht an Best-Practices dar. Viele Bücher wurden schon zu diesem Thema geschrieben. Es kann auch vorkommen, dass man an manchen Stellen genau diesen Best-Practices entsagt, um eine bessere Lösung zu ermöglichen.</p><h2>Weitere Artikel zum Thema Best-Practices für JavaScript aus dem Netz</h2><ul><li><a href="http://dev.opera.com/articles/view/javascript-best-practices/">Operas Best-Practices</a></li><li><a href="http://www.slideshare.net/cheilmann/javascript-best-practices-1041724">Präsentation von Christian Heilmann</a></li><li><a href="http://news.ycombinator.com/item?id=835991">Hacker-News zum Thema</a></li><li><a href="https://github.com/spencertipping/js-in-ten-minutes">JavaScript in 10 Minuten</a></li></ul><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/06/04/javascript-miniframework/' rel='bookmark' title='JavaScript Miniframework'>JavaScript Miniframework</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/10/09/douglas-crockford-uber-die-entstehung-von-javascript/' rel='bookmark' title='Douglas Crockford über die Entstehung von JavaScript'>Douglas Crockford über die Entstehung von JavaScript</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/21/sichtbarkeit-eines-elementes-in-javascript-togglen/' rel='bookmark' title='Sichtbarkeit eines Elementes in JavaScript togglen'>Sichtbarkeit eines Elementes in JavaScript togglen</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Testen, ob cookies aktiviert sind</title><link>http://tom.kulturlounge.de/blog/2011/08/21/testen-ob-cookies-aktiviert-sind/</link> <comments>http://tom.kulturlounge.de/blog/2011/08/21/testen-ob-cookies-aktiviert-sind/#comments</comments> <pubDate>Sun, 21 Aug 2011 17:23:25 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[cookies]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[js]]></category> <category><![CDATA[test]]></category> <category><![CDATA[tipps]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=996</guid> <description><![CDATA[Verwandte Artikel:Sichtbarkeit eines Elementes in JavaScript togglen JavaScript Best-PracticesVerwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2011/08/21/sichtbarkeit-eines-elementes-in-javascript-togglen/' rel='bookmark' title='Sichtbarkeit eines Elementes in JavaScript togglen'>Sichtbarkeit eines Elementes in JavaScript togglen</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/' rel='bookmark' title='JavaScript Best-Practices'>JavaScript Best-Practices</a></li></ol>]]></description> <content:encoded><![CDATA[<p><iframe style="width: 100%; height: 300px;float:left" src="http://jsfiddle.net/shapeshifta/d4kNv/1/embedded/"></iframe></p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2011/08/21/sichtbarkeit-eines-elementes-in-javascript-togglen/' rel='bookmark' title='Sichtbarkeit eines Elementes in JavaScript togglen'>Sichtbarkeit eines Elementes in JavaScript togglen</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/' rel='bookmark' title='JavaScript Best-Practices'>JavaScript Best-Practices</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2011/08/21/testen-ob-cookies-aktiviert-sind/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Sichtbarkeit eines Elementes in JavaScript togglen</title><link>http://tom.kulturlounge.de/blog/2011/08/21/sichtbarkeit-eines-elementes-in-javascript-togglen/</link> <comments>http://tom.kulturlounge.de/blog/2011/08/21/sichtbarkeit-eines-elementes-in-javascript-togglen/#comments</comments> <pubDate>Sun, 21 Aug 2011 17:19:17 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[js]]></category> <category><![CDATA[tipps]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=993</guid> <description><![CDATA[Verwandte Artikel:JavaScript Best-Practices Schräges JavaScript Douglas Crockford über die Entstehung von JavaScriptVerwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/' rel='bookmark' title='JavaScript Best-Practices'>JavaScript Best-Practices</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/21/schrages-javascript/' rel='bookmark' title='Schräges JavaScript'>Schräges JavaScript</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/10/09/douglas-crockford-uber-die-entstehung-von-javascript/' rel='bookmark' title='Douglas Crockford über die Entstehung von JavaScript'>Douglas Crockford über die Entstehung von JavaScript</a></li></ol>]]></description> <content:encoded><![CDATA[<p><iframe style="width: 100%; height: 300px;float:left" src="http://jsfiddle.net/shapeshifta/ML5M4/1/embedded/"></iframe></p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/' rel='bookmark' title='JavaScript Best-Practices'>JavaScript Best-Practices</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/21/schrages-javascript/' rel='bookmark' title='Schräges JavaScript'>Schräges JavaScript</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/10/09/douglas-crockford-uber-die-entstehung-von-javascript/' rel='bookmark' title='Douglas Crockford über die Entstehung von JavaScript'>Douglas Crockford über die Entstehung von JavaScript</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2011/08/21/sichtbarkeit-eines-elementes-in-javascript-togglen/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Webseiten einfacher kommentieren mit markup.io</title><link>http://tom.kulturlounge.de/blog/2010/10/10/webseiten-einfacher-kommentieren-mit-markup-io/</link> <comments>http://tom.kulturlounge.de/blog/2010/10/10/webseiten-einfacher-kommentieren-mit-markup-io/#comments</comments> <pubDate>Sun, 10 Oct 2010 14:33:48 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[Fun]]></category> <category><![CDATA[Kreativ]]></category> <category><![CDATA[webdesign]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=935</guid> <description><![CDATA[Ich habe gerade schon lange gebraucht, eine passende Überschrift für markup.io zu finden (was mir nicht gelungen ist ). Markup ist ein kleines Bookmarklet, welches man sich in seine Lesezeichenleiste zieht und dann auf jeder Webseite im Netz rummalen darf. &#8230; <a href="http://tom.kulturlounge.de/blog/2010/10/10/webseiten-einfacher-kommentieren-mit-markup-io/">Weiterlesen <span class="meta-nav">&#8594;</span></a>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/10/17/kostenlose-javascript-bucher-webseiten-und-sonstige-ressourcen/' rel='bookmark' title='Kostenlose JavaScript Bücher, Webseiten und sonstige Ressourcen'>Kostenlose JavaScript Bücher, Webseiten und sonstige Ressourcen</a></li><li><a href='http://tom.kulturlounge.de/blog/2008/01/30/flex-in-2008/' rel='bookmark' title='Flex in 2008'>Flex in 2008</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/04/06/der-beste-png-fix-fur-den-ie6/' rel='bookmark' title='Der beste PNG-Fix für den IE6'>Der beste PNG-Fix für den IE6</a></li></ol>]]></description> <content:encoded><![CDATA[<p>Ich habe gerade schon lange gebraucht, eine passende Überschrift für <a href="http://markup.io/" title="Webseiten kommentieren, Ideen teilen, Fehler berichten">markup.io</a> zu finden (was mir nicht gelungen ist <img src='http://tom.kulturlounge.de/blog/wp-includes/images/smilies/icon_smile.gif' alt="icon smile   Webseiten einfacher kommentieren mit markup.io " class='wp-smiley' title="Webseiten einfacher kommentieren mit markup.io " /> ).<br /> Markup ist ein kleines <a href="http://de.wikipedia.org/wiki/Bookmarklet" title="Was das ist, sagt Dir die Wikipedia :)">Bookmarklet</a>, welches man sich in seine Lesezeichenleiste zieht und dann auf jeder Webseite im Netz rummalen darf. Das ist natürlich noch nicht alles, denn man kann diese bemalten Seiten mit anderen teilen, die dann genau sehen können, was bemalt wurde.</p><p>Warum man das machen sollte? So ist es einfacher, über Fehler auf der eigenen Seite, neue Funktionen oder Ideen von anderen Seiten zu sprechen, wo man normalerweise einen Screenshot machen würde, was weit umständlicher ist.<br /> Der Dienst ist zwar noch Beta, aber ich werde das weiterverfolgen! Anschauen lohnt sich jetzt schon! <img src='http://tom.kulturlounge.de/blog/wp-includes/images/smilies/icon_smile.gif' alt="icon smile   Webseiten einfacher kommentieren mit markup.io " class='wp-smiley' title="Webseiten einfacher kommentieren mit markup.io " /></p><p><a href="http://markup.io/"><img src="http://tom.kulturlounge.de/blog/wp-content/uploads/2010/10/markup.jpg" alt="markup   Webseiten einfacher kommentieren mit markup.io " title="Webseiten einfacher kommentieren mit markup.io " width="633" height="588" class="aligncenter size-full wp-image-936" /></a></p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/10/17/kostenlose-javascript-bucher-webseiten-und-sonstige-ressourcen/' rel='bookmark' title='Kostenlose JavaScript Bücher, Webseiten und sonstige Ressourcen'>Kostenlose JavaScript Bücher, Webseiten und sonstige Ressourcen</a></li><li><a href='http://tom.kulturlounge.de/blog/2008/01/30/flex-in-2008/' rel='bookmark' title='Flex in 2008'>Flex in 2008</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/04/06/der-beste-png-fix-fur-den-ie6/' rel='bookmark' title='Der beste PNG-Fix für den IE6'>Der beste PNG-Fix für den IE6</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2010/10/10/webseiten-einfacher-kommentieren-mit-markup-io/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Kurzform von $(document).ready() in jQuery</title><link>http://tom.kulturlounge.de/blog/2010/09/28/kurzform-von-document-ready-in-jquery/</link> <comments>http://tom.kulturlounge.de/blog/2010/09/28/kurzform-von-document-ready-in-jquery/#comments</comments> <pubDate>Tue, 28 Sep 2010 21:06:41 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[document.ready()]]></category> <category><![CDATA[jQuery]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=924</guid> <description><![CDATA[Kleiner Quicktip für jQuery, es gibt eine Kurzform für Nämlich diese hier: Übergibt man eine anonyme Funktion an die $ Methode von jQuery, so wird diese erst bei document.ready(); ausgeführt. Gut zu wissen Dies und weiteres wird sehr gut in &#8230; <a href="http://tom.kulturlounge.de/blog/2010/09/28/kurzform-von-document-ready-in-jquery/">Weiterlesen <span class="meta-nav">&#8594;</span></a>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/09/18/high-performance-javascript-tabs-mit-jquery/' rel='bookmark' title='High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)'>High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/12/10/jquery-am-freitag/' rel='bookmark' title='jQuery am Freitag&#8230;'>jQuery am Freitag&#8230;</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/21/herzklopfen-mit-jquery/' rel='bookmark' title='Herzklopfen mit jQuery'>Herzklopfen mit jQuery</a></li></ol>]]></description> <content:encoded><![CDATA[<p>Kleiner Quicktip für jQuery, es gibt eine Kurzform für</p><pre class="brush: jscript; title: ; notranslate">
$(document).ready(function() {
//document is ready
});
</pre><p>Nämlich diese hier:</p><pre class="brush: jscript; title: ; notranslate">
$(function() {
// document is ready
});
</pre><p>Übergibt man eine anonyme Funktion an die $ Methode von jQuery, so wird diese erst bei document.ready(); ausgeführt.</p><p>Gut zu wissen <img src='http://tom.kulturlounge.de/blog/wp-includes/images/smilies/icon_wink.gif' alt="icon wink   Kurzform von $(document).ready() in jQuery" class='wp-smiley' title="Kurzform von $(document).ready() in jQuery" /></p><p>Dies und weiteres wird sehr gut in diesem empfehlenswerten Buch erklärt:<br /> <iframe src="http://rcm-de.amazon.de/e/cm?t=thomhors-21&#038;o=3&#038;p=8&#038;l=as1&#038;asins=1935182323&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/09/18/high-performance-javascript-tabs-mit-jquery/' rel='bookmark' title='High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)'>High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/12/10/jquery-am-freitag/' rel='bookmark' title='jQuery am Freitag&#8230;'>jQuery am Freitag&#8230;</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/21/herzklopfen-mit-jquery/' rel='bookmark' title='Herzklopfen mit jQuery'>Herzklopfen mit jQuery</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2010/09/28/kurzform-von-document-ready-in-jquery/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)</title><link>http://tom.kulturlounge.de/blog/2010/09/18/high-performance-javascript-tabs-mit-jquery/</link> <comments>http://tom.kulturlounge.de/blog/2010/09/18/high-performance-javascript-tabs-mit-jquery/#comments</comments> <pubDate>Sat, 18 Sep 2010 10:35:40 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[Fun]]></category> <category><![CDATA[search engine optimization / SEO]]></category> <category><![CDATA[webdesign]]></category> <category><![CDATA[CSS-Sprites]]></category> <category><![CDATA[DOM]]></category> <category><![CDATA[event delegation]]></category> <category><![CDATA[fast tabs]]></category> <category><![CDATA[high performance]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[seo]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=914</guid> <description><![CDATA[Tabscripte gibt es im Netz zu Hauf, viele benutzen mittlerweile ein JavaScript-Framework wie jQuery. Ich wollte ein ganz einfaches Script erstellen, welches besonders wert auf Geschwindigkeit legt. Wenig valides HTML, gutes, knappes CSS, CSS-Sprites, smarte Event-Handler, wenig DOM-Zugriffe und sie &#8230; <a href="http://tom.kulturlounge.de/blog/2010/09/18/high-performance-javascript-tabs-mit-jquery/">Weiterlesen <span class="meta-nav">&#8594;</span></a>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/02/27/online-editor-fur-javascript-html-und-css/' rel='bookmark' title='Online-Editor für JavaScript, HTML und CSS'>Online-Editor für JavaScript, HTML und CSS</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/09/28/kurzform-von-document-ready-in-jquery/' rel='bookmark' title='Kurzform von $(document).ready() in jQuery'>Kurzform von $(document).ready() in jQuery</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/10/17/kostenlose-javascript-bucher-webseiten-und-sonstige-ressourcen/' rel='bookmark' title='Kostenlose JavaScript Bücher, Webseiten und sonstige Ressourcen'>Kostenlose JavaScript Bücher, Webseiten und sonstige Ressourcen</a></li></ol>]]></description> <content:encoded><![CDATA[<p>Tabscripte gibt es im Netz zu Hauf, viele benutzen mittlerweile ein JavaScript-Framework wie <a href="http://jquery.com/" title="write less, do more">jQuery</a>. Ich wollte ein ganz einfaches Script erstellen, welches besonders wert auf Geschwindigkeit legt. Wenig valides HTML, gutes, knappes CSS, CSS-Sprites, smarte Event-Handler, wenig DOM-Zugriffe und sie sollten auch ohne JavaScript noch benutzbar bleiben (<a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript">unobtrusive JavaScript</a>), was ja für <a href="http://tom.kulturlounge.de/blog/category/search-engine-optimization-seo/" title="search engine optimization">SEO</a> (Suchmaschinenoptimierung) sehr wichtig ist.<br /> Als kleine Spielerei kann man auch weitere Tabs hinzufügen. Ich wollte damit zeigen, wie wichtig und sinnvoll <a href="http://api.jquery.com/delegate/" title="Event-Delegation with jQuery">Event-Delegation</a> in JavaScript ist und wie es viele Dinge vereinfacht.</p><p>Das Ergebnis dieses Experimentes ist <a href="http://dl.dropbox.com/u/2694258/tabs/tabs.html" title="Tabs with jQuery">hier</a> in einer kleinen Demo zu sehen.</p><p><strong>Update:</strong> Eine erweiterte Version bietet nun auch Deeplinking, so dass man auf Tabs verlinken kann, <a href="http://dl.dropbox.com/u/2694258/tabs/tabs_deeplinking.html">diese ist hier zu finden</a>. Bei <a href="https://developer.mozilla.org/en/DOM/window.onhashchange">modernen Browsern</a> wird auch der Vor- und Zurückbutton unterstützt, mit einem <a href="http://benalman.com/projects/jquery-hashchange-plugin/">jQuery Plugin</a> ließe sich diese Funktion auch noch für ältere Browser aufbohren.</p><p><a href="http://dl.dropbox.com/u/2694258/tabs/tabs.html" title="High Performance Tabs with jQuery"><img src="http://tom.kulturlounge.de/blog/wp-content/uploads/2010/09/jquery_Tabs.jpg" alt="jquery Tabs   High Performance JavaScript Tabs mit Jquery (auch mit Deeplinking)" width="670" height="466" class="alignnone size-full wp-image-915" title="High Performance JavaScript Tabs mit Jquery (auch mit Deeplinking)" /></a></p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/02/27/online-editor-fur-javascript-html-und-css/' rel='bookmark' title='Online-Editor für JavaScript, HTML und CSS'>Online-Editor für JavaScript, HTML und CSS</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/09/28/kurzform-von-document-ready-in-jquery/' rel='bookmark' title='Kurzform von $(document).ready() in jQuery'>Kurzform von $(document).ready() in jQuery</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/10/17/kostenlose-javascript-bucher-webseiten-und-sonstige-ressourcen/' rel='bookmark' title='Kostenlose JavaScript Bücher, Webseiten und sonstige Ressourcen'>Kostenlose JavaScript Bücher, Webseiten und sonstige Ressourcen</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2010/09/18/high-performance-javascript-tabs-mit-jquery/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>JavaScript Miniframework</title><link>http://tom.kulturlounge.de/blog/2010/06/04/javascript-miniframework/</link> <comments>http://tom.kulturlounge.de/blog/2010/06/04/javascript-miniframework/#comments</comments> <pubDate>Fri, 04 Jun 2010 19:39:11 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[Fun]]></category> <category><![CDATA[webdesign]]></category> <category><![CDATA[WTF]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=867</guid> <description><![CDATA[You can find a testrun here: http://jsfiddle.net/ZjsYB/ Based on a Thomas Fuchs article found here. Verwandte Artikel:High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking) JavaScript Best-Practices Online-Editor für JavaScript, HTML und CSSVerwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/09/18/high-performance-javascript-tabs-mit-jquery/' rel='bookmark' title='High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)'>High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/' rel='bookmark' title='JavaScript Best-Practices'>JavaScript Best-Practices</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/02/27/online-editor-fur-javascript-html-und-css/' rel='bookmark' title='Online-Editor für JavaScript, HTML und CSS'>Online-Editor für JavaScript, HTML und CSS</a></li></ol>]]></description> <content:encoded><![CDATA[<pre class="brush: jscript; title: ; notranslate">
//implement missing function
document.getElementsByClassName = function(cl) {
    var retnode = [];
    var myclass = new RegExp('\\b'+cl+'\\b');
    var elem = this.getElementsByTagName('*');
    for (var i = 0; i &lt; elem.length; i++) {
        var classes = elem[i].className;
        if (myclass.test(classes)) retnode.push(elem[i]);
    }
return retnode;
};

//framework functions
function $(id){ return document.getElementById(id); }
function html(id, html){ $(id).innerHTML = html; }
function css(id, style){ $(id).style.cssText += ';'+style;}
function $$(class){ return document.getElementsByClassName(class); }
</pre><p>You can find a testrun here: <a href="http://jsfiddle.net/ZjsYB/" title="JavaScript miniframework">http://jsfiddle.net/ZjsYB/</a></p><p>Based on a Thomas Fuchs article found <a href="http://mir.aculo.us/2010/06/04/making-an-ipad-html5-app-making-it-really-fast/">here</a>.</p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/09/18/high-performance-javascript-tabs-mit-jquery/' rel='bookmark' title='High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)'>High Performance JavaScript-Tabs mit Jquery (auch mit Deeplinking)</a></li><li><a href='http://tom.kulturlounge.de/blog/2011/08/22/javascript-best-practices/' rel='bookmark' title='JavaScript Best-Practices'>JavaScript Best-Practices</a></li><li><a href='http://tom.kulturlounge.de/blog/2010/02/27/online-editor-fur-javascript-html-und-css/' rel='bookmark' title='Online-Editor für JavaScript, HTML und CSS'>Online-Editor für JavaScript, HTML und CSS</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2010/06/04/javascript-miniframework/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Facebook secrets &#8211; what you where afraid to ask</title><link>http://tom.kulturlounge.de/blog/2010/05/14/facebook-secrets-what-you-where-afraid-to-ask/</link> <comments>http://tom.kulturlounge.de/blog/2010/05/14/facebook-secrets-what-you-where-afraid-to-ask/#comments</comments> <pubDate>Thu, 13 May 2010 22:55:31 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[Fun]]></category> <category><![CDATA[link of the minute]]></category> <category><![CDATA[Media]]></category> <category><![CDATA[WTF]]></category> <category><![CDATA[facebook]]></category> <category><![CDATA[facts]]></category> <category><![CDATA[secrets]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=845</guid> <description><![CDATA[[Source: Online PhD Programs for Mashable.com] Verwandte Artikel:Habe ich Schweinegrippe?Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2009/05/01/habe-ich-schweinegrippe/' rel='bookmark' title='Habe ich Schweinegrippe?'>Habe ich Schweinegrippe?</a></li></ol>]]></description> <content:encoded><![CDATA[<p><a href="http://www.onlinephdprograms.com/facebook-facts-you-probably-didnt-know/"><img src="http://mashable.com/wp-content/uploads/2010/05/FACEBOOK21.jpg" alt="FACEBOOK21   Facebook secrets   what you where afraid to ask" width="640" title="Facebook secrets   what you where afraid to ask"  /></a><br />[Source: <a href="http://www.onlinephdprograms.com/">Online PhD Programs</a> for <a href="http://www.blippr.com/apps/337174-Mashable" target="_blank" rel="http://www.blippr.com/apps/337174-Mashable.whtml" class="blippr-inline-smiley blippr-inline-smiley-07">Mashable<img class='wp-smiley' src="http://netdna.blippr.com/images/inline-face_07.png?1265851550" alt="   Facebook secrets   what you where afraid to ask" width="14" height="14" title="Facebook secrets   what you where afraid to ask" />.com</a>]</p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2009/05/01/habe-ich-schweinegrippe/' rel='bookmark' title='Habe ich Schweinegrippe?'>Habe ich Schweinegrippe?</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2010/05/14/facebook-secrets-what-you-where-afraid-to-ask/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Freies Buttonset mit PSDs dazu</title><link>http://tom.kulturlounge.de/blog/2010/04/09/freies-buttonset-mit-psds-dazu/</link> <comments>http://tom.kulturlounge.de/blog/2010/04/09/freies-buttonset-mit-psds-dazu/#comments</comments> <pubDate>Fri, 09 Apr 2010 19:29:41 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[Kreativ]]></category> <category><![CDATA[webdesign]]></category> <category><![CDATA[freie Buttons]]></category> <category><![CDATA[freie icons]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=812</guid> <description><![CDATA[Und heute aus der Kategorie freie und kostenlose Icons dieses freie Buttonset bei dem es gleich noch die PSDs dazu gibt: Verwandte Artikel:Freie Icons finden mit den besten Suchmaschinen für freie Icons Kostenlose und freie IconsVerwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/03/27/freie-icons-finden-mit-den-besten-suchmaschinen-fur-freie-icons/' rel='bookmark' title='Freie Icons finden mit den besten Suchmaschinen für freie Icons'>Freie Icons finden mit den besten Suchmaschinen für freie Icons</a></li><li><a href='http://tom.kulturlounge.de/blog/2008/03/07/kostenlose-und-freie-icons/' rel='bookmark' title='Kostenlose und freie Icons'>Kostenlose und freie Icons</a></li></ol>]]></description> <content:encoded><![CDATA[<p>Und heute aus der Kategorie <a title="Suchmaschinen für freie Icons" href="http://tom.kulturlounge.de/blog/2010/03/27/freie-icons-finden-mit-den-besten-suchmaschinen-fur-freie-icons/">freie und kostenlose Icons</a> dieses freie Buttonset bei dem es gleich noch die PSDs dazu gibt:</p><p style="text-align: center;"><a href="http://www.tuttoaster.com/great-web-button-set-free-download/"><img class="size-full wp-image-813 aligncenter" title="Freies Buttonset mit PSDs dazu" src="http://tom.kulturlounge.de/blog/wp-content/uploads/2010/04/buttonset.png" alt="buttonset   Freies Buttonset mit PSDs dazu" width="600" height="800" /></a></p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2010/03/27/freie-icons-finden-mit-den-besten-suchmaschinen-fur-freie-icons/' rel='bookmark' title='Freie Icons finden mit den besten Suchmaschinen für freie Icons'>Freie Icons finden mit den besten Suchmaschinen für freie Icons</a></li><li><a href='http://tom.kulturlounge.de/blog/2008/03/07/kostenlose-und-freie-icons/' rel='bookmark' title='Kostenlose und freie Icons'>Kostenlose und freie Icons</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2010/04/09/freies-buttonset-mit-psds-dazu/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Der beste PNG-Fix für den IE6</title><link>http://tom.kulturlounge.de/blog/2010/04/06/der-beste-png-fix-fur-den-ie6/</link> <comments>http://tom.kulturlounge.de/blog/2010/04/06/der-beste-png-fix-fur-den-ie6/#comments</comments> <pubDate>Tue, 06 Apr 2010 20:46:53 +0000</pubDate> <dc:creator>Tom</dc:creator> <category><![CDATA[coding]]></category> <category><![CDATA[Frontendentwicklung]]></category> <category><![CDATA[webdesign]]></category><guid isPermaLink="false">http://tom.kulturlounge.de/blog/?p=809</guid> <description><![CDATA[Für den Internet Explorer 6 kursieren einige PNG-Fixes. Angefangen bei Filtern in der CSS-Datei bis hin zu ausgeklügelteren Methoden. Besonders überzeugt hat mich der dd_belated PNG-Fix, der auch sich wiederholende Hintergründe erlaubt, was bei den anderen nicht möglich ist. Außerdem &#8230; <a href="http://tom.kulturlounge.de/blog/2010/04/06/der-beste-png-fix-fur-den-ie6/">Weiterlesen <span class="meta-nav">&#8594;</span></a>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2008/01/30/flex-in-2008/' rel='bookmark' title='Flex in 2008'>Flex in 2008</a></li><li><a href='http://tom.kulturlounge.de/blog/2009/05/10/wie-man-inline-styles-in-css-uberschreiben-kann/' rel='bookmark' title='Wie man inline styles in CSS überschreiben kann'>Wie man inline styles in CSS überschreiben kann</a></li><li><a href='http://tom.kulturlounge.de/blog/2009/05/06/stylen-von-inputfile-formularfeldern-im-webdesign/' rel='bookmark' title='Stylen von input=&#8221;file&#8221; Formularfeldern im Webdesign'>Stylen von input=&#8221;file&#8221; Formularfeldern im Webdesign</a></li></ol>]]></description> <content:encoded><![CDATA[<p><a href="http://tom.kulturlounge.de/blog/wp-content/uploads/2010/04/internet_explorer.png"><img class="alignleft size-full wp-image-810" title="Der beste PNG Fix für den IE6" src="http://tom.kulturlounge.de/blog/wp-content/uploads/2010/04/internet_explorer.png" alt="internet explorer   Der beste PNG Fix für den IE6" width="162" height="171" /></a>Für den Internet Explorer 6 kursieren einige PNG-Fixes. Angefangen bei Filtern in der CSS-Datei bis hin zu ausgeklügelteren Methoden. Besonders überzeugt hat mich der <a title="PNG-Fix für den Internet Explorer 6" href="http://www.dillerdesign.com/experiment/DD_belatedPNG/">dd_belated</a> PNG-Fix, der auch sich wiederholende Hintergründe erlaubt, was bei den anderen nicht möglich ist.</p><p>Außerdem lässt er sich einfach auch in eigenen Scripten zusätzlich verwenden, wenn Inhalte versteckt und dann angezeigt werden sollen. Der Vorteil bei dd_belated liegt an der Benutzung von <a title="Vector Markup Language im IE6" href="http://de.wikipedia.org/wiki/Vector_Markup_Language">VML</a> anstatt des üblichen <a title="PNGs im Internet Explorer 6 mit CSS korrekt anzeigen" href="http://koivi.com/ie-png-transparency/">Alphafilters</a>, was bessere Resultate ermöglicht. Was bleibt, ist natürlich eine kurze Verzögerung bis zum Ausführen des Scriptes und der damit kurz sichtbaren falsch angezeigten PNGs.</p><p>Recht häufig trat bei der Verwendung des Fixes ein Problem mit der Positionierung des Elementes selber im Elternelement auf. Ein einfaches &#8220;position:relative&#8221; für das umgebende Elternelement reichte dann aber meist aus.</p><p>Verwandte Artikel:<ol><li><a href='http://tom.kulturlounge.de/blog/2008/01/30/flex-in-2008/' rel='bookmark' title='Flex in 2008'>Flex in 2008</a></li><li><a href='http://tom.kulturlounge.de/blog/2009/05/10/wie-man-inline-styles-in-css-uberschreiben-kann/' rel='bookmark' title='Wie man inline styles in CSS überschreiben kann'>Wie man inline styles in CSS überschreiben kann</a></li><li><a href='http://tom.kulturlounge.de/blog/2009/05/06/stylen-von-inputfile-formularfeldern-im-webdesign/' rel='bookmark' title='Stylen von input=&#8221;file&#8221; Formularfeldern im Webdesign'>Stylen von input=&#8221;file&#8221; Formularfeldern im Webdesign</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://tom.kulturlounge.de/blog/2010/04/06/der-beste-png-fix-fur-den-ie6/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)
Database Caching 21/138 queries in 0.160 seconds using disk: basic
Object Caching 2766/2873 objects using disk: basic

Served from: tom.kulturlounge.de @ 2012-02-07 16:16:39 -->
