<?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/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>bueltge.de [by:ltge.de] &#187; Javascript</title>
	<atom:link href="http://bueltge.de/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Tue, 22 May 2012 20:02:25 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Optionen aus WordPress an JavaScripts übergeben #1</title>
		<link>http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/</link>
		<comments>http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 09:19:50 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1329</guid>
		<description><![CDATA[Von PHP auf Werte in der DB zugreifen und an JavaScript übergeben, das JSON Objekt ist eine Möglichkeit dies zu tun und dieses Beispiel soll es verdeutlichen.]]></description>
			<content:encoded><![CDATA[<p>Auch in WordPress bleibt man nicht konstant in der PHP-Welt und so müssen Einstellungen, Daten aus der Datenbank an Scripte übergeben werden. In vielen Plugins findet man Lösungen in dem die <code>wp-load.php</code> geladen wird und damit der Zugriff auf alle Funktionen von WordPress. Vor geraumer Zeit hat <a href="http://ottopress.com/2010/dont-include-wp-load-please/">Otto (Samuel Wood)</a> auf diesen Umstand schon aufmerksam gemacht und der Artikel zeigt Lösungsansätze. Noch immer kommen dazu Fragen auf und noch immer erscheinen Plugins, die die wp-load.php genau auf Grund solcher Probleme laden.</p>
<p>Eine ähnliche Problematik stellt sich, wenn man den Source der Scripte nicht einfach in den Footer-Bereich von WordPress schreibt, sondern sauber in eine Datei auslagert und via <code>wp_enqueue_script()</code> inkludiert. Nur so kann WordPress diese Scripte mit verwalten, packen und optimiert ausliefern. Daher möchte ich in zwie Beispielen aufzeigen, wie man Daten von PHP an JS übergibt.<br />
<span id="more-1329"></span><br />
Die ersten Schnipsel nutzen die Übergabe von Werten via JSON; wobei ich die Werte aus der Datenbank mit den gängigen Mitteln in PHP hole und das Script direkt im head der Seite die Werte als Objekt ablegt.</p>
<pre><code>
add_action( 'admin_enqueue_scripts', 'fb_print_scripts' );

function fb_print_scripts() {
	global $current_screen;
	
	if ( isset( $current_screen -&gt; id ) &amp;&amp; ! in_array( $current_screen -&gt; id, array( 'post', 'page' ) ) )
		return;
	
	if ( is_plugin_active_for_network( plugin_basename( __FILE__ ) ) )
		$options = get_site_option( 'my_options_id' );
	else
		$options = get_option( 'my_options_id' );
	
	if ( ! $options )
		return;
	?&gt;
	&lt;script type=&quot;text/javascript&quot;&gt;
		var my_json_object = &lt;?php echo htmlspecialchars( json_encode( $options ) ); ?&gt;;
	&lt;/script&gt;
	&lt;?php
}
</code></pre>
<p>Die obige Funktion gibt nun die Werte aus der Datenbank als JSON-Objekt in den head im Backend, da im ersten Schritt der Funktion die Seite abgefragt wird. Mittes <code>$current_screen</code> wird geprüft, so dass nur ausgeliefert wird, wenn man auf der definierten Seiten (post, page) ist.</p>
<p>Der folgende Schritt ist üblich und best practice in WordPress um Scripte einzubringen. Dabei inkludiere ich das JS-File, welches dann auf das JSON-Objekt zugreift.</p>
<pre><code>
add_action( 'admin_enqueue_scripts', 'fb_admin_enqueue_scripts' );

function fb_admin_enqueue_scripts( $where ) {
	
	if ( ! in_array( $where, array( 'post.php', 'post-new.php', ) )
		return;
	
	$suffix = defined('SCRIPT_DEBUG') &amp;&amp; SCRIPT_DEBUG ? '.dev' : '';
	
	wp_enqueue_script(
		self :: get_textdomain() . '_script', 
		plugins_url( '/js/my_script' . $suffix. '.js', __FILE__ ), 	
		array( 'jquery', 'my_other_script' ),
		'',
		TRUE
	);
	
}
</code></pre>
<p>Im Script wird dann direkt auf das Objekt zugegriffen, welches verarbeitet wird.</p>
<pre><code class="javascript">
jQuery( document ).ready( function( $ ) {
	
	if ( typeof my_json_object == 'undefined' )
		return;

// debug in console of Browser
console.dir( my_json_object ); 

});
</code></pre>
<p>Eine weitere Lösung soll im Folgebeitrag der diesjährigen Serie vorgestellt werden; der Link folgt. - hier nun <a href="http://bueltge.de/daten-aus-wordpress-an-javascript-uebergeben-2/1334/">der Link</a>, nach dem der <a href="http://bueltge.de/daten-aus-wordpress-an-javascript-uebergeben-2/1334/" title="Daten aus WordPress an JavaScript übergeben #2">Artikel</a> online ist.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Scripte von WordPress debuggen</title>
		<link>http://bueltge.de/scripte-von-wordpress-debuggen/1301/</link>
		<comments>http://bueltge.de/scripte-von-wordpress-debuggen/1301/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 08:18:41 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1301</guid>
		<description><![CDATA[Die Ausgabe der verwalteten Scripte und Stylesheets kann mit der kleinen Funktion recht schnell gesichtet werden, eine kleine Lösung um Debuggen zu vereinfachen.]]></description>
			<content:encoded><![CDATA[<p>WordPress kann sich komfortabel um das verwalten von Scripten und Stylesheets kümmern, Vorraussetzung ist die Nutzung der Möglichkeiten rund um <code>wp_enqueue_script()</code> und <code>wp_enqueue_style()</code>. Will man sich um die darin übergeben Dateien kümmern, so kann eine kleine Funktion helfen und die integrierten Scripte und Styles zurück geben.<br />
<span id="more-1301"></span></p>
<h4>Einige Hintergründe</h4>
<p>Scripte und Stylesheets kann man in WordPress auf verschieden Art in die Ausgabe einbringen, das gilt für Backend und Frontend. Dabei ist das klassiche Verfahren eines meta-Elementes im head oder footer-Bereich nicht zu empfehlen, denn WordPress kann seit Version 2.1 die Verwaltung der Scripte und Stylesheets übernehmen - Vorraussetzung ist die Nutzung der Möglichkeiten rund um <code>wp_enqueue_script()</code> und <code>wp_enqueue_style()</code>. Damit werden diverse Vorteile direkt duch den WordPress-Kern übernommen; komprimieren und gemeinsames Ausliefern in jeweils einer Datei alle Scripte und Stylesheets. Ebenso kümmert sich WordPress darum, dass jedes Script nur einmal in der Auslieferung vorhanden ist; also nicht ein bekanntes Problem wie die mehrfache Verwendung von jQuery zulassen.<br />
Aktuell gibt es dazu immer wieder ähnliche Ansätze mit diversen JS-Lösungen. WordPress kann sich darum kümmern und optimiert ausliefern, jedes Script nur einmal und einfach via ID auf die Scripte zugreifen. </p>
<p>Um nun aber die includierten Scripte und Stylesheets sauber auszuwerten, bedarf es einiger Zugriffe oder die kleine folgende Lösung und schon sind alle eingebundenen Dateien in einer Liste. Die folgenden Funktion kippt die Adressen  einfach in den Footer von WordPress, Frontend - <code>wp_footer</code> und Backend - <code>admin_footer</code>, dies kann via Hook natürlich angepasst werden; dies soll nur eine Idee sein und einen Ansatz liefern.<br />
Parallel habe ich es im Plugin <a href="http://wordpress.org/extend/plugins/debug-objects/">Debug Objects</a> integriert und die neue Version sollte in den weihnachtlichen Tagen online gehen.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" alt="Beispiel für Script und Stylesheet Listings" width="450" height="598" /></p>
<pre><code>
// view on frontend footer
add_action( 'wp_footer', 'fb_urls_of_enqueued_stuff' );
// view on backend footer
add_action( 'admin_footer', 'fb_urls_of_enqueued_stuff' );
// get engueued scripts and style urls
function fb_urls_of_enqueued_stuff( $handles = array() ) {
	global $wp_scripts, $wp_styles;
	
	// scripts
	foreach ( $wp_scripts -&gt; registered as $registered )
		$script_urls[ $registered -&gt; handle ] = $registered -&gt; src;
	// styles
	foreach ( $wp_styles -&gt; registered as $registered )
		$style_urls[ $registered -&gt; handle ] = $registered -&gt; src;
	
	if ( empty( $handles ) ) {
		$handles = array_merge( $wp_scripts -&gt; queue, $wp_styles -&gt; queue );
		array_values( $handles );
	}
	$output = '';
	foreach ( $handles as $handle ) {
		if ( ! empty( $script_urls[ $handle ] ) )
			$output .= $script_urls[ $handle ] . '&lt;br&gt;';
		if ( ! empty( $style_urls[ $handle ] ) )
			$output .= $style_urls[ $handle ] . '&lt;br&gt;';
	}
	
	echo $output;
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/scripte-von-wordpress-debuggen/1301/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/scripte-von-wordpress-debuggen/1301/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" medium="image">
			<media:title type="html">Beispiel für Script und Stylesheet Listings</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Werteübergabe PHP zu JavaScript mit WordPress</title>
		<link>http://bueltge.de/werteubergabe-php-zu-javascript-mit-wordpress/1255/</link>
		<comments>http://bueltge.de/werteubergabe-php-zu-javascript-mit-wordpress/1255/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 09:26:40 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1255</guid>
		<description><![CDATA[Die Übergabe von Werten an JavaScript aus PHP heraus in WordPress stellt einige Entwickler immer wieder vor die Frage - Wie geht das? Es werden zum Teil aufwendige Lösungen implementiert und ein kleines Beispiel soll zeigen, wie es geht und wie WordPress dies unterstützt.]]></description>
			<content:encoded><![CDATA[<p>Beim Erstellen von Plugins und Theme-Funktion hat sich das Schreiben für das Nutzen der Mehrsprachigkeit etabliert. Für uns als deutsche Entwickler nicht mehr wegzudenken, gibt es trotzdem diverse Fallstricke und bei der Nutzung von JavaScript in Erweiterungen, ist man am überlegen, wie man die Mehrsprachigkeit umsetzt oder auch Optionswerte übergibt. WordPress stellt dazu Möglichkeiten bereit und es ist an der Zeit diese wieder bekannter zu machen, da <a href="http://wordpress.stackexchange.com/questions/351/modifying-a-js-file-with-data-from-plugin-settings/357#357">die Frage</a> immer wieder auftaucht und die Entwickler nach den Möglichkeiten suchen. Das folgende kleine Beispiel soll die Umsetzung verdeutlichen und die einfache Übergabe von Strings demonstriert dies. Ob nun Strings für die Mehrsprachigkeit oder die Übergabe von Optionswerten, ist dabei relativ egal.<br />
<span id="more-1255"></span><br />
ersten Schritt wird eine Funktion mit einem Array erstellt, die die benötigten Inhalte enthält und mittels Variablen kann auf die jeweiligen Inhalte zugegriffen werden</p>
<pre><code>
function get_language_strings() {
    $strings = array(
        'example' =&gt; __( 'My Example String', TEXTDOMAIN_CONSTANT ),
        'foo'   =&gt; __( 'My foo string', TEXTDOMAIN_CONSTANT ),
        'bar'   =&gt; __( 'My bar', TEXTDOMAIN_CONSTANT )
    )

    return $strings;
}
</code></pre>
<p>Beim Aufruf der Erweiterung, Plugin oder im Theme, muss die Funktion geladen werden. Dafür stellt WordPress die Funktion <code><a href="http://codex.wordpress.org/Function_Reference/wp_localize_script">wp_localize_script()</a></code> bereit, die sich um alles kümmert:</p>
<pre><code>
wp_localize_script( 
                       'my_foo', 
                       'my_var_prefix',
                       $this-&gt;get_language_strings() // inside class
);
</code></pre>
<p>In den Scripten kann nun auf die Variablen zugegriffen werden:</p>
<pre><code class="javascript">
alert( my_var_prefix.example );
</code></pre>
<p>Kein Einbinden der <code>wp-load.php</code> oder ähnliches, einfach auf die Inhalte zugreifen. Die Strings werden nun in allen Sprachen mit Hilfe der klassischen Methoden übersetzt und es gilt lediglich die entsprechenden Dateien anzulegen.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/werteubergabe-php-zu-javascript-mit-wordpress/1255/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/werteubergabe-php-zu-javascript-mit-wordpress/1255/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Kategorie- und Archiv-Dropdowns mit unobtrusive JavaScript</title>
		<link>http://bueltge.de/kategorie-und-archiv-dropdowns-mit-unobtrusive-javascript/1238/</link>
		<comments>http://bueltge.de/kategorie-und-archiv-dropdowns-mit-unobtrusive-javascript/1238/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 05:09:41 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1238</guid>
		<description><![CDATA[Eine gute Website funktioniert, wenn ein Benutzer mit deaktiviertem JavaScript vorbeikommt, genau so gut wie mit aktiviertem Scripting. Eine Navigation der Kategorien und des Archivs mit WordPress ist mit Standards von WordPress möglich, allerdings nur mit aktiviertem JavaScript. Eine Alternative stellt dieses Tutorial von Peter Kröner bereit.]]></description>
			<content:encoded><![CDATA[<p>Eine gute Website funktioniert, wenn ein Benutzer mit deaktiviertem JavaScript vorbeikommt, genau so gut wie mit aktiviertem Scripting. Man trennt die JS-Schicht der Website sauber von allem anderen (und verzeichtet zum Beispiel auf onclick-Handler im HTML) und legt seine Scripts so an, dass nur die schon vorhandene Funktionalität der Seite verbessern und umformen. So kommen die Besucher sowohl mit als auch ohne JS an ihr Ziel, wenn der Weg ohne Scripting vielleicht etwas mühsamer oder weniger schön ausfällt. Diese Herangehensweise an Scripting auf Websites nennt sich Unobtrusive JavaScript und warum das eine Gute Sache ist, <a href="http://jsconf.blip.tv/file/4002810/">erklärt Jenn Lukas in diesem Talk von der JSConf 2010</a>. Neben all den guten Gründen ist das wichtigste Argument für unobtrusive JavaScript, dass es bei entsprechender Planung so einfach umzusetzen ist, dass es grundlos verschenktes Potenzial wäre wenn man darauf verzichten würde. Problematisch kann es allein dann werden, wenn das einem das für die Website verwendete CMS einem einen Strich durch die Rechnung macht – womit wir beim Thema WordPress wären.</p>
<p>Gelegentlich möchte man in seiner Blog-Sidebar Dropdowns-Menüs (select-Elemente) zur Navigation der Kategorien und des Archivs unterbringen und der WordPress-Codex bietet in den Dokumentationen auch entsprechende Lösungen für <a href="http://codex.wordpress.org/Function_Reference/get_categories#Dropdown_Box">Kategorien</a> und <a href="http://codex.wordpress.org/Function_Reference/wp_get_archives#Dropdown_Box">Archiv</a> an, die allerdings beide nur mit aktiviertem JavaScript funktionieren. In beiden Fällen wird die URL der Ziel-Seite im <code>value</code>-Wert der im Dropdown-Menü verbauten <code>option</code>-Elemente gespeichert und sobald man einen Eintrag auswählt, wird man via JavaScript auf eben jene URL weitergeleitet. Die fast gleiche Funktionalität ließe sich aber auch ganz ohne Scripts erreichen:<br />
<span id="more-1238"></span></p>
<ol>
<li>Ein altmodisches GET-Formular mit Absendebutton anlegen, das an die Basisadresse der Website sendet</li>
<li>Das <code>select</code> in eben dieses Formular stecken und <code>name="cat"</code> angeben</li>
<li>Den <code>option</code>-Elementen als <code>value</code> den Slug der Kategorien geben</li>
</ol>
<p>Das Absenden des Formulars resultiert dann in einem Aufruf von <code>blog.de/?cat=kategorie</code> und damit der gewünschten Kategorie, ggf. mit einem Redirect auf die suchmaschinenfreundliche Variante der URL. Das funktioniert für den Besucher genau so gute wie die Lösung aus dem Codex, sieht man einmal davon ab, dass man einen Button anklicken muss. Doch genau hier kann man mit JavaScript eingreifen, den Button verstecken und das Absenden des Formulars über einen via Script eingefügten <code>onclick</code>-Handler übernehmen. Das Endresultat sieht dann für Surfer mit Script wie die Codex-Lösung aus und alle anderen kommen dann eben über einen Klick auf den Button an ihr Ziel und alle sind zufrieden. Also an die Arbeit!</p>
<p>Die Grundlage für das Kategorie-Dropdown bildet ein ganz normales HTML-Formular:</p>
<pre><code class="php">
&lt;form id=&quot;kategorienform&quot; action=&quot;&lt;?php bloginfo('url'); ?&gt;&quot; method=&quot;get&quot;&gt;
    &lt;label for=&quot;kategorienselect&quot;&gt;Zu Kategorie springen&lt;/label&gt;
    &lt;select id=&quot;kategorienselect&quot; name=&quot;cat&quot;&gt;
        &lt;option value=&quot;&quot;&gt;-- Bitte auswählen&lt;/option&gt;
        &lt;?php
            $categories = get_categories('hierarchical=0');
            foreach($categories as $category){
                $selected = (is_category($category-&gt;cat_ID)) ? 'selected' : '';
                echo '&lt;option '.$selected.' value=&quot;'.$category-&gt;cat_ID.'&quot;&gt;'.$category-&gt;cat_name.' ('.$category-&gt;count.')&lt;/option&gt;';
            }
        ?&gt;
    &lt;/select&gt;
    &lt;input id=&quot;kategorienbutton&quot; value=&quot;Kategorie abrufen&quot; type=&quot;submit&quot;&gt;
&lt;/form&gt;
</code></pre>
<p>Dieses könnte man so in die Seitenleiste des Dokuments werfen und es würde funktionieren, doch wir wollen ja noch den Absenden-Button loswerden und die Umleitung direkt bei der Auswahl einer Kategorie starten. Hierzu braucht es nicht mehr als 6 Zeilen JavaScript, die man direkt unter dem Formular einfügen kann:</p>
<pre><code class="javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
    document.getElementById('kategorienselect').onchange = function(){
        if(this.value){
            document.getElementById('kategorienform').submit();
        }
    };
    document.getElementById('kategorienbutton').style.display = 'none';
&lt;/script&gt;
</code></pre>
<p>Ändert der Benutzer seine Auswahl im <code>select</code>-Element, wird (sofern nicht gerade der „Bitte auswählen“-Eintrag gewählt wird) das Formular automatisch abgesendet, auch ohne den mit <code>style.display = 'none'</code> unsichtbar gemachten Button aktivieren zu müssen – und fertig ist das benutzerfreundliche und trotzdem auch ohne JavaScript funktionierende Kategorie-Dropdown! Das ist zwar etwas mehr Code als die drei Zeilen aus dem Codex, funktioniert dafür aber garantiert bei jedem Besucher. Und das Prinzip ist recht simpel, vorausgesetzt man plant von vornherein entsprechend. Da eben das bei WordPress selbst nicht passiert ist, müssen wir etwas mehr tippen – beziehungsweise im Falle des Archiv-Dropdowns sogar sehr viel mehr:</p>
<pre><code class="php">
&lt;form id=&quot;archivform&quot; action=&quot;&lt;?php bloginfo('url'); ?&gt;&quot; method=&quot;get&quot;&gt;
    &lt;label for=&quot;archivselect&quot;&gt;Zu Monat springen&lt;/label&gt;
    &lt;select id=&quot;archivselect&quot; name=&quot;m&quot;&gt;
        &lt;option value=&quot;&quot;&gt;-- Bitte auswählen&lt;/option&gt;
        &lt;?php
            $query = &quot;SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, COUNT(ID) as `posts`
                FROM $wpdb-&gt;posts
                WHERE post_type = 'post' AND post_status = 'publish'
                GROUP BY YEAR(post_date), MONTH(post_date)
                ORDER BY post_date DESC&quot;;
            $key = md5($query);
            $cache = wp_cache_get('select_archives', 'general');
            if(!isset($cache[$key])){
                $arcresults = $wpdb-&gt;get_results($query);
                $cache[$key] = $arcresults;
                wp_cache_set('select_archives', $cache, 'general');
            }
            else{
                $arcresults = $cache[$key];
            }
            if($arcresults){
                global $wp_locale;
                foreach((array) $arcresults as $arcresult){
                    $value = $arcresult-&gt;year.$arcresult-&gt;month;
                    $text = sprintf(__('%1$s %2$d'), $wp_locale-&gt;get_month($arcresult-&gt;month), $arcresult-&gt;year);
                    $count = '&amp;nbsp;('.$arcresult-&gt;posts.')';
                    $selected = (is_month() &amp;&amp; get_query_var('year').get_query_var('monthnum') == $value) ? 'selected' : '';
                    echo '&lt;option '.$selected.' value=&quot;'.$value.'&quot;&gt;'.$text.$count.'&lt;/option&gt;';
                }
            }
        ?&gt;
    &lt;/select&gt;
    &lt;input id=&quot;archivbutton&quot; value=&quot;Archiv abrufen&quot; type=&quot;submit&quot;&gt;
&lt;/form&gt;
</code></pre>
<p>Das Problem beim Monatsarchiv ist, dass man ohne einen eigenen SQL-Query nicht an die Informationen herankommt, die man für ein Monats-Archiv braucht. So kommt man nicht drum herum, manuell die Datenbank zu bemühen und das Ergebnis händisch zu cachen. Das Prinzip ist aber identisch: einfach ein herkömmliches Formular ausgeben und wieder mit sechs kleinen Zeilen JavaScript aufwerten:</p>
<pre><code class="javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
    document.getElementById('archivselect').onchange = function(){
        if(this.value){
            document.getElementById('archivform').submit();
        }
    };
    document.getElementById('archivbutton').style.display = 'none';
&lt;/script&gt;
</code></pre>
<p>Wir fassen zusammen: viele Zeilen Code, aber kompliziert ist das Prinzip nicht. Unobtrusive JavaScript ist eine Frage der intelligenten Planung und wenn die mal, wie bei WordPress, nicht von Haus aus mitgeliefert wird, muss man sich eben behelfen. Bei herkömmlichen Websites gibt es keinen Grund, die Bedienung komplett von JavaScript abhängig zu machen und falls doch mal etwas Mehraufwand entsteht, so ist er die saubere Trennung der Schichten und den Zugänglichkeits-Bonus allemal wert.</p>
<div class="contentdiv">
<h4>Gastbeitrag</h4>
<p><img src="http://wpengineer.com/wp-content/uploads/twitter_bigger.png" alt="" title="twitter_bigger" width="73" height="73" class="alignleft size-full wp-image-2132" /><br />
Dieser Beitrag ist aus der Feder von Peter Kröner - <a href="http://www.peterkroener.de/">peterkroener.de</a> und ist ein Beitrag zum Adventskalender auf <a href="http://wpengineer.com/">wpengineer.com</a> zum Thema WordPress.<br />
Peter Kröner ist selbstständiger Webdesigner und -entwickler sowie Autor des <a href="http://html5-buch.de/">HTML5-Buchs</a>.<br />
Auf <a href="http://www.peterkroener.de/weblog/">peterkroener.de</a> bloggt er über alle Themen rund um Webtechnologie.</p>
<p>Vielen Dank auch hier nochmal von meiner Seite an <a href="http://www.peterkroener.de/">Peter</a>.
</div>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/kategorie-und-archiv-dropdowns-mit-unobtrusive-javascript/1238/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/kategorie-und-archiv-dropdowns-mit-unobtrusive-javascript/1238/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/twitter_bigger.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/twitter_bigger.png" medium="image">
			<media:title type="html">twitter_bigger</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Die Reduktion von HTML5</title>
		<link>http://bueltge.de/reduktion-html5/1204/</link>
		<comments>http://bueltge.de/reduktion-html5/1204/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 18:39:18 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1204</guid>
		<description><![CDATA[Neben dem <a href="http://bueltge.de/inspiriere-maximal-10k-html5/1200/">10k Contest</a> gibt es aktuell auch ein <a href="http://js1k.com/">1k Variante</a>, wobei es dabei um einen reinen JavaScript Vergleich handelt. Die Basis ist trotzdem html5 und ein canvas-Element steht zur Verfügung. Mit diesem kann man spielen und es sind einige wirklich tolle Sachen dabei - alles in allem 1k; externe Libraries sind hier nicht erlaubt. Für mich ein kleiner Ansporn um meine Idee mit HTML5 und CSS3 zu reduzieren und mal zu schauen, ob es denn auch im Rahmen von max. 1k geht.]]></description>
			<content:encoded><![CDATA[<p>Neben dem <a href="http://bueltge.de/inspiriere-maximal-10k-html5/1200/">10k Contest</a> gibt es aktuell auch ein <a href="http://js1k.com/">1k Variante</a>, wobei es sich dabei um einen reinen JavaScript Vergleich handelt. Die Basis ist trotzdem HTML5 und ein canvas-Element steht zur Verfügung. Mit diesem kann man spielen und es sind einige wirklich tolle Sachen dabei - alles in allem 1k; externe Libraries sind hier nicht erlaubt. Für mich ein kleiner Ansporn um meine Idee mit HTML5 und CSS3 zu reduzieren und mal zu schauen, ob es denn auch im Rahmen von max. 1kByte geht.<br />
<span id="more-1204"></span><br />
Dabei konnte ich erstmals die große Freiheit von HTML5 kennen lernen - HTML5 lässt im Syntax diverse Freiheiten, denn man muss nicht jedes Element nutzen und auch nicht jedes Element schließen. Für ein übersichtliches Markup sicher nicht immer vorteilhaft, für meine Vorgabe von einem Kilobyte aber schon. Dabei ist nun tatsächlich <a href="http://bueltge.de/test/10kapart/max1k.html">eine Lösung</a> entstanden, die nur 1k groß ist und in einigen Bereichen abgespeckt wurde. Die Animation wurde mit JavaScript und nicht CSS3 realisiert und auch die runden Ecken mussten weichen - zu viel Syntax.<br />
Wer also ein wenig Inspiration und Möglichkeiten braucht, schaut sich die beiden Versionen mal an und hat vielleicht auch große Lust mal wieder ein kleines Projekt zu machen, kein CMS dahinter - pur HTML, CSS und JavaScript.</p>
<p>Es gibt noch immer Potenzial zum Reduzieren der Größe, so bin ich kein Freak im Rahmen von JavaScript und hier sehe ich noch einiges an Möglichkeiten. Nun aber die beiden Lösungen zum Vergleich.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/10kvs1k.png" alt="4k vs 1k mit HTML5, CSS3 uns JavaScript" /></p>
<p>Variante 1 hat in erster Linie ihren Bedarf im CSS, viel Code für wenig Wirkung. Man braucht aktuell für diverse Browser unterschiedliche Syntax um die Rundungen zu erzeugen. Die Animation funktioniert nur in Webkit-Browsern und auch die RGB-Farben sind recht viele Zeichen. </p>
<ol>
<li><a href="http://bueltge.de/test/10kapart/">Die 4,5k Variante</a></li>
<li><a href="http://bueltge.de/test/10kapart/max1k.html">Die 1k Variante</a></li>
</ol>
<p>Um diese Sachen auf 1k zu drücken musste einiges an Code weichen; eine andere Möglichkeit habe ich nicht gesehen. Die Animation habe ich nur im Ansatz zum Test eingebaut, sie ist wesentlich simpler. Das Spiel der Farben lasse ich via Zufall ablaufen und brauche trotzdem weniger Code. Lediglich die Möglichkeit RGB-Syntax zu nutzen ist geblieben, wird aber im JS per Zufall erzeugt.</p>
<p>In beiden Fällen habe ich es getan, weil ich mal etwas Spielen und Versuchen wollte. Einfach mal so und trotzdem sollte der Code valide und mit aktuellen Mitteln möglich sein. Interessant ist wohl das HTML5-Markup der 1k Variante - auch diese Version ist valider Code und ist doch recht untypisches Markup.</p>
<pre><code lang="html">
&lt;!DOCTYPE html&gt;
&lt;meta charset=&quot;utf-8&quot;&gt; 
&lt;title&gt;one day at a time in 1k&lt;/title&gt;
&lt;style&gt;body{background:#FFF;font:16px/23px Georgia,Times,serif;margin:20px}h1{font-size:45px}h3{display:none}time{font-size:50px;border:3px solid #F9F5EB;-webkit-box-shadow:4px 4px 6px #545454;-moz-box-shadow:4px 4px 6px #545454;box-shadow:4px 4px 6px #545454;padding:30px 40px}div{margin:120px 0}&lt;/style&gt;
&lt;script&gt;function d(){var n=new Date(),t=n.getDate(),m=n.getMonth(),y=n.getFullYear(),y=t+'.'+m+'.'+y;if(t&lt;10)t=&quot;0&quot;+t;if(m&lt;10)m=&quot;0&quot;+m, datetime=y+'-'+m+'-'+t,x=document.createTextNode(y);d=document.getElementById('d');d.appendChild(x);d.setAttribute(&quot;datetime&quot;,datetime);setInterval('d.style.background=&quot;rgba(&quot;+Math.floor(Math.random()*256)+&quot;,&quot;+Math.floor(Math.random()*256)+&quot;,&quot;+Math.floor(Math.random()*256)+&quot;,0.4)&quot;',600);setInterval('d.style.margin=Math.floor(Math.random()*20)+&quot;%&quot;',500)}window.onload=d;&lt;/script&gt;
&lt;header&gt;&lt;h1&gt;Carpe diem (1k)&lt;/h1&gt;&lt;/header&gt;
&lt;div&gt;&lt;h3&gt;Today's date&lt;/h3&gt;&lt;time id=&quot;d&quot;&gt;&amp;nbsp;&lt;/time&gt;&lt;/div&gt;

</code></pre>
<p>Die style- und script-Elemente kann man im Grunde unbeachtet lassen, es geht um die anderen Tags, hier wird dem typischen Markup von HTML einiges entzogen.</p>
<p>Das <code>html</code>-, <code>head</code>- und <code>body</code> sind ganz entfallen. Gleiches kann man auch für <code>colgroup</code> und <code>tbody</code> machen. Andere Elemente dürfen nur das schließende Tag weg lassen: <code>li</code>, <code>dt</code>, <code>dl</code>, <code>p</code>, <code>option</code> und einige mehr.</p>
<p>Im Gegensatz dazu die Variante mit xHTML-Schreibweise und kompletten Tags.</p>
<pre><code>
&lt;!DOCTYPE html&gt; 
&lt;html lang=&quot;en&quot;&gt; 
	&lt;head&gt; 
		&lt;meta charset=&quot;utf-8&quot;&gt; 
		
		&lt;title&gt;one day at a time&lt;/title&gt;
		
		&lt;meta name=&quot;description&quot; content=&quot;one day at a time - Small Sample Application&quot;&gt;
		&lt;meta name=&quot;language&quot; content=&quot;en&quot; /&gt;
		&lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot; /&gt;

		&lt;script&gt;
			function addDate(){
				var now   = new Date();
				var day   = now.getDate();
				var month = now.getMonth();
				var mname = new Array(&quot;January&quot;, &quot;February&quot;, &quot;March&quot;, &quot;April&quot;, &quot;May&quot;, &quot;June&quot;, &quot;July&quot;, &quot;August&quot;, &quot;September&quot;, &quot;October&quot;, &quot;November&quot;, &quot;December&quot;);
				var year  = now.getFullYear();
				var date  = day + '.' + mname[month] + ' ' + year;
				if (day &lt; 10) day = &quot;0&quot; + day;
				if (month &lt; 10) month = &quot;0&quot; + month;
				var datetime = year + '-' + month + '-' + day;
				var dtxt   = document.createTextNode(date);
				document.getElementById('date').appendChild(dtxt);
				document.getElementById('date').setAttribute(&quot;datetime&quot;, datetime )
			}
			window.onload = addDate;
		&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		
		&lt;div id=&quot;wrap&quot;&gt;
			
			&lt;header&gt;
				&lt;hgroup&gt;
					&lt;h1&gt;one day at a time&lt;/h1&gt;
					&lt;h2&gt;Carpe diem &amp;mdash; &lt;a href=&quot;http://en.wikipedia.org/wiki/Carpe_diem&quot;&gt;Seize the day&lt;/a&gt;.&lt;/h2&gt;
				&lt;/hgroup&gt;
			&lt;/header&gt;
			
			&lt;section&gt;
				&lt;h3&gt;Today's date&lt;/h3&gt;
				&lt;div class=&quot;pulse&quot;&gt;
					&lt;time id=&quot;date&quot;&gt;&amp;nbsp;&lt;/time&gt;
				&lt;/div&gt;
			&lt;/section&gt;
			
			&lt;footer&gt;
				&lt;p&gt;View in an HTML5 browser such as: &lt;a href=&quot;http://ie.microsoft.com/testdrive/&quot;&gt;IE9 Developer Preview&lt;/a&gt;, &lt;a href=&quot;http://www.mozilla.com/en-US/firefox/firefox.html&quot;&gt;Firefox&lt;/a&gt;.&lt;/p&gt;
				&lt;p&gt;See animation only on webkit browser such as: &lt;a href=&quot;http://www.apple.com/safari/&quot;&gt;Safari&lt;/a&gt; or &lt;a href=&quot;http://www.google.com/chrome/index.html?hl=en&amp;amp;brand=CHMB&amp;amp;utm_campaign=en&amp;amp;utm_source=en-ha-na-us-sk&amp;amp;utm_medium=ha&quot;&gt;Chrome&lt;/a&gt;.&lt;/p&gt;
			&lt;/footer&gt;
			
		&lt;/div&gt;
		
	&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Natürlich sind hier auch einige Inhalte mehr und vor allem wesentlich mehr Semantik unter gebracht. Eine schöner Vergleich der vielleicht zum Nachdenken anregt und mir wieder die Unterschiede und Möglichkeiten aufgezeigt hat.</p>
<p>Vielleicht Lust bekommen, zu spielen, zu testen und die neuen Möglichkeiten mit HTML5 und CSS3 zu versuchen - wenn ja, dann hat sich der Artikel gelohnt. Solltest du Hinweise für meine Spielerei oder Fehler gefunden haben - dann bin ich sehr dankbar und der Artikel hat sich noch viel mehr gelohnt.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/reduktion-html5/1204/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/reduktion-html5/1204/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/10kvs1k.png" />
		<media:content url="http://bueltge.de/wp-content/images/10kvs1k.png" medium="image">
			<media:title type="html">4k vs 1k mit HTML5, CSS3 uns JavaScript</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress und jQuery - einige Tipps</title>
		<link>http://bueltge.de/wordpress-und-jquery-einige-tipps/1172/</link>
		<comments>http://bueltge.de/wordpress-und-jquery-einige-tipps/1172/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 16:00:21 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1172</guid>
		<description><![CDATA[jQuery und WordPress gemeinsam nutzen ist einfach, wenn man die Funktionen kennt und einige Beispiel sollen dem Verständnis dienen.]]></description>
			<content:encoded><![CDATA[<p>Innerhalb von WordPress sind eine ganze Reihe von Javascript Bibliotheken vorhanden, diese kann man einfach nutzen und muss sie nicht extra in Themes und Plugins mitbringen. Ebenfalls empfiehlt sich diese Vorgehensweise, damit Bibliotheken nicht mehrfach geladen werden. Einiges Hinweise zu beiden Themen findet ihr in den Beiträgen <a href="http://bueltge.de/javascript-bibliotheken-in-und-aus-wordpress-nutzen/808/">JavaScript-Bibliotheken in und aus WordPress nutzen</a> und <a href="http://bueltge.de/abfrage-einer-script-version-in-wordpress/570/">Abfrage einer Script-Version in WordPress</a>.</p>
<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/jquery_logo.gif" alt="jQuery Logo" /><br />
Ab und an braucht man aber etwas bestimmtes und einiges davon wiederholt sich und daraus sind einige Code-Schnippsel entstanden, die hier nun abgelegt sind. Dabei möchte ich speziell am Beispiel jQuery zeigen, wie das geht - liegt zum einen daran, dass jQuery mit vielen Plugins im Core von WordPress vorhanden ist und dass die Arbeit mit jQuery recht unkompliziert ist. Prinzipiell gelten die Hooks und Aufrufe aber auch für eigene Scripte und andere Bibliotheken.<br />
<span id="more-1172"></span></p>
<h4>Die Hooks zum einhaken</h4>
<p>WordPress bietet die Hooks um an bestimmten Punkten im Core einzuhaken. Hier ist einer der Stärken von WordPress und die folgenden drei Hooks sind insbesondere für das inkludieren von Scripten bei Themes interessant. Die nachfolgenden Beispiele zeigen die Verwendung auf.</p>
<ul>
<li><a href="http://adambrown.info/p/wp_hooks/hook/init"><code>init</code></a></li>
<li><a href="http://adambrown.info/p/wp_hooks/hook/template_redirect"><code>template_redirect</code></a></li>
<li><code>after_setup_theme</code> ab WordPress 3.0</li>
</ul>
<h4>jQuery von WordPress im Theme mit der Google AJAX Library ersetzen</h4>
<p>Im folgenden Source wird die jquery-Library von Google CDN geladen; die Nutzung von jQuery kann aber ungestört genutzt bleiben. Andere Plugins können also via <code>wp_enqueue_script()</code> sehr einfach auf die Bibliothek zugreifen.</p>
<pre><code class="php">
function fb_greyfoto_init() {
	if ( !is_admin() ) { // prinzipiell überflüssig, da der Hook nur im Theme zieht
		wp_deregister_script( 'jquery' ); // deregister Schlüssel jquery
		wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', false, '1.4.2'); // registriere Schlüssel jquery mit der URL von Google CDN
		wp_enqueue_script( 'jquery' ); // binde jquery ein
	}
}
// nur für Theme, ab WordPress 3.0
add_action( 'after_setup_theme', 'fb_greyfoto_init' ); // Theme aktiv, inkludiere Funktion
</code></pre>
<h4>jQuery Library im Footer</h4>
<p>Der Standard-Aufruf von <code>wp_enqueue_script( 'jquery' )</code> im Theme sorgt zwar dafür, dass man jQuery von WordPress holt und wenn alle Plugins und Themes die Bibliothek so referenzieren, dann wird die Bibliothek auch nur einmal eingebunden, aber jQuery wird nicht im Footer geladen, sondern im <em>head</em> der Site. Daher muss der Aufruf umgestellt werden und der Parameter für "lade im Footer" mitgegeben werden.<br />
Im Aufruf des Beispiel zeigt sich auch der Unterschied der Hooks, da <code>after_setup_theme</code> erst ab WordPress 3.0 zur Verfügung steht.</p>
<pre><code class="php">
function fb_greyfoto_init() {
	if ( !is_admin() ) {
		wp_deregister_script( 'jquery' );
		wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.4.2', true ); // lade im Footer - true
		wp_enqueue_script( 'jquery' );
		
		// js vom Theme laden, Vorraussetzung jQuery
		wp_enqueue_script( 'styleswitcher', get_bloginfo( 'template_directory') . '/js/styleswitcher.jquery.php', array( 'jquery'), '1.3.2', true ); // lade mein Script mit Schlüssel styleswitcher im Footer und benutze jquery
		wp_enqueue_script( 'greyfoto', get_template_directory_uri() . '/js/photoblogfb.js', array( 'jquery', 'styleswitcher'), '1.1.3.1', true ); // nutze jquery und styleswitcher und lade dann Script greyfoto
	}
}

// auch für WP < version 3.0
global $wp_version;
if ( version_compare($wp_version, "3.0alpha", "<") ) {
	add_action( 'init', 'fb_greyfoto_init' );
} else {
	add_action( 'after_setup_theme', 'fb_greyfoto_init' );
}
</code></pre>
<p>Das obige Beispiel kann man noch ein wenig eleganter lösen und so das Laden der Scripte an WP übergeben; wichtig ist, dass die eigenen Scripte über einen Schlüssel registriert sind und diese Schlüssel gibt man dann nur als Voraussetzung mit.</p>
<pre><code class="php">
function fb_greyfoto_init() {
	if ( !is_admin() ) {
		wp_deregister_script( 'jquery' );
		wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.4.2', true ); // lade im Footer - true
		wp_register_script( 'styleswitcher', get_template_directory_uri() . '/js/styleswitcher.jquery.php', array( 'jquery'), '1.3.2', true ); // registrier mein Script mit Schlüssel styleswitcher für das Laden im Footer und Vorraussetzung jquery
		wp_register_script( 'greyfoto', get_template_directory_uri() . '/js/photoblogfb.js', array( 'jquery', 'styleswitcher'), '1.1.3.1', true ); // nutze jquery und styleswitcher und lade dann Script greyfoto
		
		wp_enqueue_script( array('greyfoto') ); // greyfoto braucht styleswitcher und jquery
	}
}

add_action( 'after_setup_theme', 'fb_greyfoto_init' );
</code></pre>
<h4>Script bei spezieller Seite laden</h4>
<p>Manche Scripte braucht man explizit nur auf bestimmten Templates, Seiten oder Beiträgen - dazu sind die <a href="http://bueltge.de/debug-objects-wordpress-plugin/966/">Conditional Tags</a> da; es gilt sie zu nutzen. Hier beginnt Performance-Optimierung. Das folgende Script wird nur beim Template <code>custom-page.php</code> geladen.</p>
<pre><code class="php">
function fb_greyfoto_page_init() {
	if ( !is_page_template( 'custom-page.php' ) )
		return;

	wp_enqueue_script( 'mypagescript', get_template_directory_uri() . '/js/my_script_4_page.js', array('jquery'), '0.1', true );
}
add_action( 'template_redirect', 'fb_greyfoto_page_init' );
</code></pre>
<h4>Die Verwendung des $</h4>
<p>Auch innerhalb der Scripte gibt es einiges zu beachten.<br />
Um mit $ zu arbeiten, wie viele mit jQuery gewohnt sind, muss Jquery aan $ übergeben werden; einfach und schnell passiert und nun kann man wie gewohnt arbeiten. Die Kurzvariante <code>$(function() {} );</code> sollte man sich innerhalb von WordPress angewöhnen.</p>
<pre><code class="javascript">
jQuery(function ($) {
	// hier kann man nun ohne Probleme $ als Referenz auf jQuery nutzen
});
</code></pre>
<p>Um zu prüfen, ob das HTML geladen ist, nutzt man den folgenden Aufruf. So stellt man sicher, dass der DOM geladen ist und man via jQuery das DOM durchsuchen kann und nun die eigentliche Arbeit des Scriptes starten kann. Ein klare Empfehlung also für diese Variante. Die vielen Vorteile möchte ich nicht erklären, dies kann man genau und umfangreich im Beitrag <a href="http://www.learningjquery.com/2006/09/introducing-document-ready">Introducing $(document).ready()</a> nachlesen.</p>
<pre><code class="javascript">
jQuery(document).ready(function ($) {
	$('#id').toggle({
		//paramter für bsp. toggle
	});
});
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-und-jquery-einige-tipps/1172/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-und-jquery-einige-tipps/1172/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/jquery_logo.gif" />
		<media:content url="http://bueltge.de/wp-content/images/jquery_logo.gif" medium="image">
			<media:title type="html">jQuery Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Stylesheet laden, wenn die WordPress Galerie im Beitrag ist</title>
		<link>http://bueltge.de/stylesheet-laden-wenn-wordpress-galerie-beitrag/1090/</link>
		<comments>http://bueltge.de/stylesheet-laden-wenn-wordpress-galerie-beitrag/1090/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 00:06:37 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linktipp]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1090</guid>
		<description><![CDATA[Im Bezug auf die bessere Gallery ist es eigentlich nicht nötig das Stylesheet zu laden, wenn es keine Gallery gibt, insofern ist es also lohnend, wenn man im Vorfeld prüft, ob die Gallery im Beitrag genutzt wird und nur dann das Stylesheet laden. Dazu muss man die Beitrag parsen und das kann man auf zwei Arten tun.]]></description>
			<content:encoded><![CDATA[<p>Im Bezug auf die <a href="http://dynamicinternet.eu/blog/2009-11-06/eine-loesung-fuer-die-wordpress-galerie/">bessere Gallery</a> ist es eigentlich nicht nötig das Stylesheet zu laden, wenn es keine Galerie gibt, insofern ist es also lohnend, wenn man im Vorfeld prüft, ob die Gallery im Beitrag genutzt wird und nur dann das Stylesheet laden. Dazu muss man die Beitrag parsen und das kann man auf zwei Arten tun.<br />
<span id="more-1090"></span><br />
Die klassische Lösung ist den Content in der Ausgabe zu parsen und den Shortcode zu suchen, klassisches PHP <a href="http://de2.php.net/manual/de/function.strstr.php"><code>strstr</code></a>. Je nach Ergebnis wird das Stylesheet geladen.<br />
<code>if ( strstr($post-&gt;post_content, '[gallery') )</code>.<br />
Dies kostet natürlich Zeit und Performance, was man eigentlich meiden möchte. Insofern ist es besser, wenn man den Beitrag im Vorfeld parsen kann. In diesem Zusammenhang gibt es einen <a href="http://wordpress.org/support/topic/350167#post-1344676">Tread im Forum von WordPress</a>, welches genau dazu eine erstklassige Lösung von <a href="http://w-shadow.com/">WhiteShadow</a> hat und diesen Ansatz kann man natürlich auch für das Laden des Stylesheet nutzen, wenn es um die Gallery geht.</p>
<pre><code class="php">
// onyl css, when post has a gallery
function gallery_stylesheet($posts) {
	if ( empty($posts) )
		return $posts;

	$found = false;

	foreach ($posts as $post) {
		if ( stripos($post-&gt;post_content, '[gallery') )
			$found = true;
			break;
		}

	if ($found)
		wp_enqueue_style( 'gallery-stylesheet', get_bloginfo('stylesheet_directory') . '/gallery.css', false, false, 'screen' );

	return $posts;
}
add_action('the_posts', 'gallery_stylesheet');
</code></pre>
<p>Diesen Ansatz kann man natürlich auch nutzen für das Laden von Scripten,</p>
<pre><code class="php">
// onyl js, when post has a gallery
function my_script($posts) {
	if ( empty($posts) )
		return $posts;

	$found = false;

	foreach ($posts as $post) {
		if ( stripos($post-&gt;post_content, '[gallery') )
			$found = true;
			break;
		}

	if ($found)
		wp_enqueue_script( 'my-script', get_bloginfo('stylesheet_directory') . '/script.js', false, false, true );

	return $posts;
}
add_action('the_posts', 'my_script');
</code></pre>
<p>Weitere Hinweise zum Einbinden von JavaScript- und CSS-Dateien gibt es <a href="http://bueltge.de/javascript-bibliotheken-in-und-aus-wordpress-nutzen/808/">in einem anderen Beitrag</a> zum Thema.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/stylesheet-laden-wenn-wordpress-galerie-beitrag/1090/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/stylesheet-laden-wenn-wordpress-galerie-beitrag/1090/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Suchformular</title>
		<link>http://bueltge.de/wordpress-suchformular/1002/</link>
		<comments>http://bueltge.de/wordpress-suchformular/1002/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 20:44:28 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1002</guid>
		<description><![CDATA[Die Integration der Suche in ein Theme für WordPress kann diverse Wege gehen, meist wird dazu ein Template gebaut, welches inkludiert wird. Dies ist nicht in jedem Fall notwendig und kann mit Hilfe eines WordPress Template Tag ebenso realisiert werden. Ob man sich dafür entscheidet und wie man darauf eingreifen kann, dies erklärt hoffentlich mein kleiner Beitrag.]]></description>
			<content:encoded><![CDATA[<p>Die Integration der Suche in ein Theme für WordPress kann diverse Wege gehen, meist wird dazu ein Template gebaut, welches inkludiert wird. Dies ist nicht in jedem Fall notwendig und kann mit Hilfe eines WordPress Template Tag ebenso realisiert werden. Ob man sich dafür entscheidet und wie man darauf eingreifen kann, dies erklärt hoffentlich mein kleiner Beitrag.<br />
<span id="more-1002"></span></p>
<p>WordPress stellt eine Funktion bereit, die es einfach erlaubt, das Suchformular zu nutzen: <code>get_search_form()</code>.  Ist genauso zu verstehen wie beispielsweise die Template Tags <code>get_sidebar()</code> oder <code>get_header()</code>, die die meisten Themes nutzen. Verfügbar ist die Funktion seit WordPress Version 2.7 und ist zu finden in <code>wp-includes/general-template.php</code>.</p>
<h4>HTML-Resultat</h4>
<p>Die Ausgabe ohne Veränderung der Funktion sieht dann im HTML wie folgt aus.</p>
<pre><code>
&lt;form role=&quot;search&quot; method=&quot;get&quot; id=&quot;searchform&quot; action=&quot;http://example.com/&quot;&gt;
	&lt;div&gt;
		&lt;label class=&quot;screen-reader-text&quot; for=&quot;s&quot;&gt;' . __('Search for:') . '&lt;/label&gt;
		&lt;input type=&quot;text&quot; value=&quot;&quot; name=&quot;s&quot; id=&quot;s&quot; /&gt;
		&lt;input type=&quot;submit&quot; id=&quot;searchsubmit&quot; value=&quot;Suche&quot; /&gt;
	&lt;/div&gt;
&lt;/form&gt;
</code></pre>
<h4>Inhalt im Inputfeld</h4>
<p><img class="alignright" src="http://bueltge.de/wp-content/images/wp/suchfeld.png" alt="Suchfeld Beispiel" /><br />
Nun bietet die Funktion einen Hook an, um auf das Suchfeld Einfluss zu nehmen. In diesem Beispiel soll der Text im Suchfeld beeinflusst werden, so dass der User eine Info dort vorfindet.<br />
Dies wird über Filter Hook <code>the_search_query</code> realisiert. Innerhalb der Funktion, die an diesen Hook übergeben wird, wird zusätzlich noch geprüft, ob schon ein Wert im Feld steht und wenn dies nicht der Standard-Wert ist, sondern zum Beispiel der zurückgegeben Wert aus der Suche, dann wird nicht der Wert im Suchfeld gesetzt, sondern unverändert gelassen.<br />
Diese Funktion gehört klassisch in die <code>functions.php</code> des Themes und kann natürlich an die eigenen Bedürfnisse angepasst werden.</p>
<pre><code>
function fb_get_search_query() {
	$return = stripslashes( get_query_var( 's' ) );
	if ( $return == '' )
		$return = __( 'Hier Suchbegriff eingeben...', FB_BASIS_TEXTDOMAIN );
	else
		$return = apply_filters( 'get_search_query', $return );
	
	return $return;
}
add_filter( 'the_search_query', 'fb_get_search_query' );
</code></pre>
<h4>Suchfeld und eigene Bedürfnisse</h4>
<p>Nun ist das Suchformular aber eventuell nicht immer, wie man sich das wünscht und daher bietet es sich an, ein eigenes Suchfeld zu erstellen und zu nutzen. Um dabei aber die Möglichkeiten von WordPress weiterhin anzubieten, ist es sinnvoll, auch diese Möglichkeit als Funktion oder auch Template mit dem Namen <code>searchform.php</code>, siehe <a href="#searchform">nähere Infos</a> weiter unten, im Theme einzubinden und die Hooks mit vorzusehen. So können eventuell genutzte Plugins darauf zugreifen. Auch dazu ein kleines Beispiel, bei dem als Veränderung eine kleine JavaScript-Funktion eingebunden werden soll.</p>
<p>Als erstes die Funktion für die <code>functions.php</code> des Themes.</p>
<pre><code>
function fb_get_search_form() {
	do_action( 'get_search_form' );

	$form = '&lt;form method=&quot;get&quot; id=&quot;searchform&quot; action=&quot;' . get_option('home') . '/&quot; &gt;
	&lt;div&gt;&lt;label class=&quot;screen-reader-text&quot; for=&quot;s&quot;&gt;' . __('Search for:') . '&lt;/label&gt;
	&lt;input type=&quot;text&quot; value=&quot;' . esc_attr(apply_filters('the_search_query', get_search_query())) . '&quot; name=&quot;s&quot; id=&quot;s&quot; onfocus=&quot;clearSearch();&quot; /&gt;
	&lt;input type=&quot;submit&quot; id=&quot;searchsubmit&quot; value=&quot;'. esc_attr__('Search') .'&quot; /&gt;
	&lt;/div&gt;
	&lt;/form&gt;';

	echo apply_filters('get_search_form', $form);
}
</code></pre>
<p>Die Funktion ernthält den schon oben angesprochenen Hook <code>the_search_query</code> und außerdem die Erweiterung des JavaScript <code>onfocus="clearSearch();"</code>. Dies kleine Funktion sorgt nur dafür, dass der Inhalt des Suchfeldes gelöscht wird, wenn man in die Box klickt. Wobei ich den Inhalt prüfe und nur dann lösche, wenn der Inhalt explizit dem vorgegebenen Syntax <em>Hier Suchbegriff eingeben...</em> entspricht.</p>
<pre><code>
function clearSearch() {
	queryBox = document.getElementById('s');

	if ( queryBox.value == 'Hier Suchbegriff eingeben...' ) {
		queryBox.value = '';
	}
	queryBox.style.color = '#292929';
}
</code></pre>
<p>Das kleine Script ist in einer Datei abgelegt und wird ebenfalls aus der <code>functions.php</code> des Themes geladen. Dazu dient der folgende  Aufruf; nähere Infos zur Funktion <code>wp_enqueue_script</code> finet ihr beispielsweise im Artikel <a href="http://bueltge.de/javascript-bibliotheken-in-und-aus-wordpress-nutzen/808/">JavaScript-Bibliotheken in und aus WordPress nutzen</a>.<br />
<code>wp_enqueue_script( 'fb_scripts', get_bloginfo('template_directory') . '/js/script.js', '', '', true );<br />
</code></p>
<p>Alternativ eine Lösung mit Hilfe von jQuery</p>
<pre><code class="php">
$(document).ready(function() {  
$("input#s").val("Enter your search text here");  
   textFill($('input.text1'));  
});  
    function textFill(input){ //input focus text function  
    var originalvalue = input.val();  
    input.focus( function(){  
        if( $.trim(input.val()) == originalvalue ){ input.val(''); }  
    });  
    input.blur( function(){  
        if( $.trim(input.val()) == '' ){ input.val(originalvalue); }  
    });  
} 
</code></pre>
<h4 id="searchform">Das Template searchform.php</h4>
<p>Natürlich besteht auch weiterhin die Möglichkeit extra ein Template für das Suchformular anzulegen. Dabei sucht WordPress nach dem Template <code>searchform.php</code> im Theme. Dabei sucht WordPress im ersten Schritt nach diesem Template, wird dies nicht gefunden, dann wird seit Version 2.7 von WordPress das Formular aus dem Template Tag <code>get_search_form()</code> genutzt.</p>
<p>Welchen Weg man geht, das ist sicher von der Arbeitsweise und Gewohnheit abhängig, aber damit ist ein Standard vorhanden, der einfach als Template Tag zur Verfügung steht und es kann bei nicht sonderlich ausgefallenen Anwendungen ein Template gespart werden.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-suchformular/1002/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-suchformular/1002/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/suchfeld.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/suchfeld.png" medium="image">
			<media:title type="html">Suchfeld Beispiel</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>CiteDrag: Drag/Drop einfach und effizient</title>
		<link>http://bueltge.de/citedrag-dragdrop-einfach-und-effizient/938/</link>
		<comments>http://bueltge.de/citedrag-dragdrop-einfach-und-effizient/938/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 13:46:16 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linktipp]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=938</guid>
		<description><![CDATA[Eine neue Lösung namens <a href="http://code.eligrey.com/citedrag/">CiteDrag</a> von Elijah Grey ermöglicht es, dass man Elemente einfach per Drag&#038;Drop in das Textfeld holt, Markieren und ziehen oder Elemente direkt ziehen.]]></description>
			<content:encoded><![CDATA[<p>In der Vergangenheit habe ich ein wenig darüber <a href="http://bueltge.de/erweiterung-der-kommentarfunktion/862/">berichtet</a>, wie ich meine Kommentarfunktion etwas erweitert habe, so dass das Bezug nehmen auf explizite Textstellen recht einfach ist. Näheres dazu kann man in dem <a href="http://bueltge.de/erweiterung-der-kommentarfunktion/862/">Artikel dazu nachlesen</a>.</p>
<p>Eine neue Lösung namens <a href="http://code.eligrey.com/citedrag/">CiteDrag</a> von Elijah Grey ermöglicht es, dass man Elemente einfach per Drag&#038;Drop in das Textfeld holt, Markieren und ziehen oder Elemente direkt ziehen.</p>
<p>Schlank und benutzerfreundlich kann die Lösung die eine oder andere Website aufwerten, daher sicher einen Blick wert: <a href="http://code.eligrey.com/citedrag/">CiteDrag</a>. Demo und Syntax sind verfügbar, Hintergründe sind im <a href="http://eligrey.com/projects/citedrag/">Artikel</a> von Elijah zu finden.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/citedrag-dragdrop-einfach-und-effizient/938/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/citedrag-dragdrop-einfach-und-effizient/938/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>jQuery 1.3 CheatSheet</title>
		<link>http://bueltge.de/jquery-13-cheatsheet/932/</link>
		<comments>http://bueltge.de/jquery-13-cheatsheet/932/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 10:12:36 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Cheat Sheet]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Webdeveloper]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=932</guid>
		<description><![CDATA[Im deutsche Umfeld scheint es, als ob <a href="http://jquery.com/">jQuery</a> das Lieblingsframework der Entwickler im Bereich JavaScript ist. Seit geraumer Zeit ist Version 1.3 von jQuery veröffentlicht und diverse Neuerungen, aber vor allem Performanceverbesserungen huldigen die neue Version. CheatSheet für jQuery]]></description>
			<content:encoded><![CDATA[<p>Im deutsche Umfeld scheint es, als ob <a href="http://jquery.com/">jQuery</a> das Lieblingsframework der Entwickler im Bereich JavaScript ist. Seit geraumer Zeit ist Version 1.3 von jQuery veröffentlicht und diverse Neuerungen, aber vor allem Performanceverbesserungen huldigen die neue Version.</p>
<p>Um so schöner, dass es auch für die neue Version (<a href="http://bueltge.de/jquery-cheat-sheet/543/">alte Version</a>) ein übersichtliches CheatSheet gibt, was beim Umgang ein leichten Zugriff erlaubt. Einfach mal drüber schauen.<br />
Alternativ kann man noch immer auf das <a href="http://www.kintek.com.au/web-design-blog/jquery-menu-firefox-extension/">Firefox Add-on</a> oder die <a href="http://api.jquery.com/">Air-Applikation</a> zurückgreifen.</p>
<p><cite>Aufgefallen bei <a href="http://technikwuerze.de/podcast/technikwuerze132/">Technikwürze 132</a></cite></p>
<p><strong>Update:</strong> <a href="http://labs.impulsestudios.ca/jquery-cheat-sheet">Cheat Sheet für jQuery Version 1.4</a> gibt es unter neuen Adresse<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/jquery-13-cheatsheet/932/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/jquery-13-cheatsheet/932/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Asynchrones Laden großer Datenmengen; XML, JSON und TXT im Vergleich</title>
		<link>http://bueltge.de/asynchrones-laden-grosser-daten-xml-json-txt-vergleich/919/</link>
		<comments>http://bueltge.de/asynchrones-laden-grosser-daten-xml-json-txt-vergleich/919/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 08:26:21 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Linktipp]]></category>
		<category><![CDATA[TXT]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=919</guid>
		<description><![CDATA[AJAX ist immer öfter ein Argument und die Lösung beim Laden großer Datenmengen. Aus der historischen Sicht ist XML eines der ersten Formate, die dabei zum Einsatz kommen. Alternativ wird JSON immer populärer und TXT ist einigen Bereichen nicht tot zu bekommen. Um so schöner, wenn man mal einen direkten Vergleich der drei Formate in diesem Anspruch hat und direkt am Vergleich sieht, wo die Vor- und Nachteile liegen.]]></description>
			<content:encoded><![CDATA[<p>AJAX ist immer öfter ein Argument und die Lösung beim Laden großer Datenmengen. Aus der historischen Sicht ist XML eines der ersten Formate, die dabei zum Einsatz kommen. Alternativ wird JSON immer populärer und TXT ist einigen Bereichen nicht tot zu bekommen. Um so schöner, wenn man mal einen direkten Vergleich der drei Formate in diesem Anspruch hat und direkt am Vergleich sieht, wo die Vor- und Nachteile liegen.</p>
<p>Diesem Thema hat <a href="http://www.anieto2k.com/2009/03/22/carga-asincrona-de-grandes-cantidades-de-datos-con-ajax/">Andrés Nieto</a> verschrieben und es lohnt den Artikel zu überfliegen, die Übersetzungsfunktion bringt sicher nicht das beste Ergebnis, aber mit ein wenig Verständnis und Mühe ist das Ergebnis seiner Bemühungen ersichtlich. Daher meine Empfehlung: &#8222;<a href="http://www.anieto2k.com/2009/03/22/carga-asincrona-de-grandes-cantidades-de-datos-con-ajax/">Carga asíncrona de grandes cantidades de dátos con Ajax</a>&#8220; lesen.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/10000_registros-579x300.png" alt="XML, JSON, TXT im Vergleich" /><br />
<span id="more-919"></span><br />
In letzter Zeit hört man immer wieder gern, das JSON sich wunderbar ansprechen lässt und gerade im Bezug auf JavaScript kann sich der Entwickler hier schon eine Menge an Zeichen sparen. Schaut euch den Code im Verhältnis zu den Diagrammen an, es lohnt.<br />
Ich denke, dass die Ergebnisse dem einen oder anderen Informationen liefern, die die Entscheidung zu einem Format leichter machen können.<br />
Wer unschlüssig ist, kann auch den Code direkt im Artikel nutzen und eigene Werte ermitteln, wobei es sicher nochmal spannend ist, den Vergleich auf unterschiedliche Browser zu erweitern.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/asynchrones-laden-grosser-daten-xml-json-txt-vergleich/919/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/asynchrones-laden-grosser-daten-xml-json-txt-vergleich/919/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/10000_registros-579x300.png" />
		<media:content url="http://bueltge.de/wp-content/images/10000_registros-579x300.png" medium="image">
			<media:title type="html">XML, JSON, TXT im Vergleich</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Erweiterung der Kommentarfunktion</title>
		<link>http://bueltge.de/erweiterung-der-kommentarfunktion/862/</link>
		<comments>http://bueltge.de/erweiterung-der-kommentarfunktion/862/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 13:16:05 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Kommentar]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=862</guid>
		<description><![CDATA[Ab jetzt ist die Kommentarfunktion ein wenig mächtiger uns soll euch den Zugriff auf Textstellen und -passagen erleichtern. Aufmerksame Leser haben vielleicht die <a href="http://bueltge.de/148-freie-icons/860/#commenthelp">Hinweise zu den Kommentaren</a> schon gelesen und die Funktion genutzt? Ich habe seit geraumer Zeit eine Möglichkeit integriert, die es euch erlaubt sich auf bestimmte Texte aus dem Artikel zu beziehen, ohne großen Mehraufwand. Um die Funktion zu nutzen müsst ihr lediglich im Artikel den Text formatieren, daraufhin erscheint ein Button mit dem Text &#8222;<em>Antworten</em>&#8220;. Beim Klick auf diesen Button wird der markierte Text direkt in die Textbox eures Kommentars übernommen und ihr könnt wie gewohnt euren Kommentar dazu schreiben. Der übernommene Text wird dabei als Zitat ausgezeichnet.]]></description>
			<content:encoded><![CDATA[<p>Ab jetzt ist die Kommentarfunktion ein wenig mächtiger uns soll euch den Zugriff auf Textstellen und -passagen erleichtern.<br />
Aufmerksame Leser haben vielleicht die <a href="#commenthelp">Hinweise zu den Kommentaren</a> schon gelesen und die Funktion genutzt? Ich habe seit geraumer Zeit eine Möglichkeit integriert, die es euch erlaubt sich auf bestimmte Texte aus dem Artikel zu beziehen, ohne großen Mehraufwand. Um die Funktion zu nutzen müsst ihr lediglich im Artikel den Text markieren, daraufhin erscheint ein Button mit dem Text &#8222;<em>Antworten</em>&#8220;. Beim Klick auf diesen Button wird der markierte Text direkt in die Textbox eures Kommentars übernommen und ihr könnt wie gewohnt euren Kommentar dazu schreiben. Der übernommene Text wird dabei als Zitat ausgezeichnet.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/commentreply.png" alt="Screenshot Bezug auf Textstellen im Artikel" /><br />
<span id="more-862"></span><br />
Ich wünsche mir, dass damit die Fragen für mich klarer werden und die Nutzung einfacher wird. Ebenso kann es natürlich genutzt werden um sich auf spezielle Bereiche oder auch nur Wörter zu beziehen, sei es wegen einer Diskussion, Korrektur oder einfach nur Rechtschreibfehler. Ich würde mich freuen, wenn ich ein Feedback bekomme, ob die Funktion sinnvoll erscheint und wie das Handling ist.</p>
<h4>Hinweise</h4>
<p>Die Möglichkeit besteht nur, wenn mein Blog mit aktivem JavaScript besucht wird. Ich habe es unter diversen Browsern getestet und bisher keine Fehler entdeckt, lediglich Unterschiede in der Darstellung, die aber nur auf Grund des entsprechenden Stylesheets zu erwarten waren.</p>
<h3>Die Technik</h3>
<p>Der eine oder andere möchte vielleicht mehr dazu wissen und die gleiche Möglichkeit involvieren, daher hier in einigen wenigen Worten, wo das ganze her ist und wie man es integriert.</p>
<p>Das JavaScript um diese Möglichkeit anzubieten wurde von <a href="http://donttrustthisguy.com/">Jim Jeffers</a> mit Hilfe von jQuery erstellt. Da ich hier auch im Blog jQuery für diverse Umsetzungen nutze, wollte ich gern diesen Mehrwert ebenso hinterlegen. Natürlich muss das Framework <a href="http://jquery.com/">jQuery</a> vorhanden sein, minimal Version 1.2.6. Ist dieses eingebunden, so muss man lediglich das <a href="http://github.com/jimjeffers/encouraged-commentary/tree/master">Script</a> von Jim hinterlegen und den Bereich,  der die Funktion haben soll mit einer entsprechenden Klasse ausstatten. Im Standard ist das die Klasse <code>quotable</code>.</p>
<p><strong>Hinweis:</strong> Wenn ihr WordPress ab Version 2.7 einsetzt und den Template Tag <code>post_class()</code> nutzt, dann muss diese Funktion lediglich um die Klasse erweitert werden, ein Beispiel:</p>
<pre><code><div &lt;?php post_class('quotable'); ?&gt; id="content"></pre>
<p><a href="http://www.texto.de/texto/wp-27-neuer-template-tag-post-class/">Monika</a> hat zu dem neuen Tag schon ein wenig mehr erklärt, so dass ich es mir hier erspare.</p>
<p>Beim <a href="http://github.com/jimjeffers/encouraged-commentary/tree/master">Download</a> des Beispiel liegt eine Demo und Doku bei, so dass es nicht problematisch sein sollte die Funktion zu nutzen.</p>
<p>Im Anschluss kann man noch den entstehenden Button ein wenig anpassen. Das Standardscript stellt dazu die ID <code>comment-respond</code> bereit.</p>
<p>Ich empfinde als Mehrwert und tolle Idee. Wer also ebenfalls mit jQuery unterwegs und ein wenig erweitern möchte, der kann sicher die 5 kByte verschmerzen und einen entsprechenden Mehrwert bieten.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/erweiterung-der-kommentarfunktion/862/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/erweiterung-der-kommentarfunktion/862/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/commentreply.png" />
		<media:content url="http://bueltge.de/wp-content/images/commentreply.png" medium="image">
			<media:title type="html">Screenshot Bezug auf Textstellen im Artikel</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Blackbird JavaScript Konsole für WordPress</title>
		<link>http://bueltge.de/blackbird-javascript-konsole-wordpress/853/</link>
		<comments>http://bueltge.de/blackbird-javascript-konsole-wordpress/853/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 12:25:56 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=853</guid>
		<description><![CDATA[<img class="alignrightob" src="http://bueltge.de/wp-content/images/wp/blackbird-logo.png" alt="Blackbird Logo" />
Die Entwicklung von JavaScript Scripten wird immer vielfältiger und öfter nötig. Um so schöner, wenn das Debuggen browserunabhängig möglich ist. Ich hatte Kontakt mit einem JS-Entwickler, der gern das Tool <a href="http://www.gscottolson.com/blackbirdjs/">Blackbird</a> einsetzt und der Zugriff innerhalb von WordPress sollte erleichtert werden.
Und genau das ist auch entstanden, Plugin kopieren, aktivieren und nutzen.]]></description>
			<content:encoded><![CDATA[<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/wp/blackbird-logo.png" alt="Blackbird Logo" /><br />
Die Entwicklung von JavaScript Scripten wird immer vielfältiger und öfter nötig. Um so schöner, wenn das Debuggen browserunabhängig möglich ist. Ich hatte Kontakt mit einem JS-Entwickler, der gern das Tool <a href="http://www.gscottolson.com/blackbirdjs/">Blackbird</a> einsetzt und der Zugriff innerhalb von WordPress sollte erleichtert werden.<br />
Und genau das ist auch entstanden, Plugin kopieren, aktivieren und nutzen.<br />
<span id="more-853"></span><br />
<a href="http://www.gscottolson.com/blackbirdjs/">Blackbird</a> ist eine Konsole zum Debuggen von JavaScript, browserunabhängig und eine echte Alternative zu Firebug oder <code>alert("Hinweis");</code>. Hinzukommt, dass Blackbird sehr einfach und optisch ansprechend ist.<br />
Mit Hilfe des Plugin für WordPress umgeht man die Integration im Quellcode, egal ob Debuggen im Frontend oder Backend von WordPress.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/blackbird-wp.png" alt="Blackbird Console in WordPress Backend und Frontend" /></p>
<h3>Anforderungen</h3>
<p>Das Plugin wurde unter WordPress 2.7 entwickelt und getestet, sollte aber Version 2.5 laufen.</p>
<h3>Installation</h3>
<ol>
<li>Plugin downloaden und die zip-Datei lokal entpacken.</li>
<li>Die PHP-Datei in euren WordPress-Plugin-Ordner kopieren (/wp-content/plugins/).</li>
<li>Im Adminbereich deines Blogs das Plugin aktivieren.</li>
<li>Reload, Frontend bzw. Backend und Taste <em>F2</em> lassen die Konsole erscheinen</li>
</ol>
<h3>Hinweise</h3>
<p>Blackbird setzt einen Cookie, wenn man das Fenster immer geladen haben will. Dazu muss lediglich die Checkbox &#8222;Visible on page load&#8220; gesetzt werden. Ansonsten kann die Konsole immer via <em>F2</em> aufgerufen werden. Der Cookie wird im Beispiel Logging auch genutzt um eine Beispielausgabe im Tool auszugeben. Das eigentliche Loggen kann beispielsweise in der <code>mylogging.js</code> geschehen, die direkt im Ordner des Plugins zur Verfügung steht.</p>
<p>Hinweise über Formen des Logging sind auf der <a href="http://www.gscottolson.com/blackbirdjs/">Projektseite des Tools</a> zu finden und sollen hier nicht weiter ausgeführt werden.</p>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="" /><br />
<input type="hidden" name="cmd" value="_xclick" /><br />
<input type="hidden" name="business" value="frank@bueltge.de" /><br />
<input type="hidden" name="item_name" value="Spende bueltge.de Blackbird" /><br />
<input type="hidden" name="no_shipping" value="1" /><br />
<input type="hidden" name="return" value="http://bueltge.de/" /><br />
<input type="hidden" name="cancel_return" value="http://bueltge.de/" /><input type="hidden" name="currency_code" value="EUR" /><br />
<input type="hidden" name="tax" value="0" /><br />
<input type="hidden" name="bn" value="PP-DonationsBF" /><br />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" /></form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.<br />
Möchtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.</p>
<p>Download als zip-Datei: <a href="http://bueltge.de/wp-content/download/wp/plugins/blackbird.zip">blackbird.zip</a> - 108 kByte<br />
<br style="clear:left" /><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/blackbird-javascript-konsole-wordpress/853/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/blackbird-javascript-konsole-wordpress/853/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/blackbird-logo.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/blackbird-logo.png" medium="image">
			<media:title type="html">Blackbird Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/blackbird-wp.png" medium="image">
			<media:title type="html">Blackbird Console in WordPress Backend und Frontend</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>jQuery Funktionen im Griff</title>
		<link>http://bueltge.de/jquery-funktionen-im-griff/851/</link>
		<comments>http://bueltge.de/jquery-funktionen-im-griff/851/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 09:18:41 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Webdeveloper]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=851</guid>
		<description><![CDATA[In der Vergangenheit habe ich die <a href="http://bueltge.de/cssdoc-leicht-gemacht/559/">Tags für CSSDOC</a> in meinem Lieblingseditor <a href="http://www.ultraedit.com/">UltraEdit</a> bereit gestellt. Durch einen netten Kontakt mit <a href="http://jendryschik.de/">Michael</a> ist mir aufgefallen, dass ich auch die Tags von jQuery im Editor nutze und warum nicht auch die bereit stellen.
Daher liegen nun hier die Tags zur jQuery Version 1.2.6. Damit wird der Zugriff sehr einfach möglich. Die Tags kann man sicher auch in anderen Editoren nutzen, man muss sie nur an das entsprechende Format anpassen.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/jquery_logo.gif" alt="jQuery Logo" /><br />
In der Vergangenheit habe ich die <a href="http://bueltge.de/cssdoc-leicht-gemacht/559/">Tags für CSSDOC</a> in meinem Lieblingseditor <a href="http://www.ultraedit.com/">UltraEdit</a> bereit gestellt. Durch einen netten Kontakt mit <a href="http://jendryschik.de/">Michael</a> ist mir aufgefallen, dass ich auch die Tags von jQuery im Editor nutze und warum nicht auch die bereit stellen.<br />
Daher liegen nun hier die Tags zur jQuery Version 1.2.6. Damit wird der Zugriff sehr einfach möglich. Die Tags kann man sicher auch in anderen Editoren nutzen, man muss sie nur an das entsprechende Format anpassen.<br />
<span id="more-851"></span><br />
Die Tags sind nach den unterschiedlichen Bereichen (wie in der Doku) gesplittet, zusätzlich gibt es alle Funktionen von jQuery in einer Liste. Dadurch kann man recht schnell arbeiten. Wer viel mit jQuery umsetzt, der wird die Unterteilung eventuell lästig finden und daher ist der Zugriff auf alle Tags in einer Liste sehr viel einfacher und schneller.</p>
<p>Um die Tags in seine Liste zu bekommen, muss man die folgenden Einträge in die taglist.txt einfügen. Wo diese sich befindet, dass erfährt man durch das Kontextmenu auf der Liste im Editor - also rechte Mousetaste auf die Tagliste und <em>Tags anpassen</em> wählen.</p>
<p>Sind die einzelnen Tags dann in der Liste gespeichert, so gilt es diese auch UltraEdit mitzuteilen. Dazu muss die &#8222;Group List&#8220; erweitert werden. Das könnte wie folgt aussehen.</p>
<pre><code>
[Group List]
0=CSSDoc
1=HTML - Special Characters
2=HTML - Tags
3=jQuery 1.2.6
4=jQuery 1.2.6 Ajax
5=jQuery 1.2.6 Attributes
6=jQuery 1.2.6 Core
7=jQuery 1.2.6 CSS
8=jQuery 1.2.6 Effects
9=jQuery 1.2.6 Events
10=jQuery 1.2.6 Internals
11=jQuery 1.2.6 Manipulation
12=jQuery 1.2.6 Traversing
13=jQuery 1.2.6 Utilities
14=UE/UES Macro Commands
15=UE/UES Script Commands
16=
</code></pre>
<p>Im Anschluss nochmal das Kontextmenu aufrufen und die neue Liste wird aktualisiert.</p>
<p>Bevor es nun nur noch die Syntax gibt, ein kleiner Tipp ab Rande zu jQuery. Besonders schön und schnell ist der Zugriff auf die Dokumentation mit Hilfe des Add on für den Firefox <a href="http://www.kintek.com.au/jquery-menu-firefox-extension.html">jQuery Menu</a>.</p>
<h4>Aufgeteilte Liste</h4>
<pre><code>
[Tag Group - jQuery 1.2.6 Core]
0="jQuery(expression, context)"
1="jQuery(html)"
2="jQuery(elements)"
3="jQuery(callback)"
4=".each(callback)"
5=".eq(position)"
6=".get()"
7=".get(index)"
8=".index(subject)"
9=".data(name)"
10=".data(name, value)"
11=".removeData(name)"
12="jQuery.fn.extend(object)"
13="jQuery.extend(object)"
14="jQuery.noConflict()"
15="jQuery.noConflict(extreme)"
16=

[Tag Group - jQuery 1.2.6 Attributes]
0=".attr(name)"
1=".attr(properties)"
2=".attr(key, value)"
3=".attr(key, fn)"
4=".removeAttr(name)"
5=".addClass(class)"
6=".hasClass(class)"
7=".removeClass(class)"
8=".toggleClass(class)"
9=".html()"
10=".html(val)"
11=".text()"
12=".text(val)"
13=".val()"
14=".val(val)"
15=".val(val)"
16=

[Tag Group - jQuery 1.2.6 Traversing]
0=".eq(index)"
1=".hasClass(class)"
2=".filter(expr)"
3=".filter(fn)"
4=".is(expr)"
5=".map(callback)"
6=".not(expr)"
7=".slice(start, end)"
8=".add(expr)"
9=".children(expr)"
10=".contents()"
11=".find(expr)"
12=".next(expr)"
13=".nextAll(expr)"
14=".parent(expr)"
15=".parents(expr)"
16=".prev(expr)"
17=".prevAll(expr)"
18=".siblings(expr)"
19=".andSelf()"
20=".end()"
21=".html()"
22=".html(val)"
23=".text()"
24=".text(val)"
25=

[Tag Group - jQuery 1.2.6 Manipulation]
0=".append(content)"
1=".appendTo(content)"
2=".prepend(content)"
3=".prependTo(content)"
4=".after(content)"
5=".before(content)"
6=".insertAfter(content)"
7=".insertBefore(content)"
8=".wrap(html)"
9=".wrap(elem)"
10=".wrapAll(html)"
11=".wrapAll(elem)"
12=".wrapInner(html)"
13=".wrapInner(elem)"
14=".replaceWith(content)"
15=".replaceAll(selector)"
16=".empty()"
17=".remove(expr)"
18=".clone()"
19=".clone(true)"
20=

[Tag Group - jQuery 1.2.6 CSS]
0=".css(name)"
1=".css(properties)"
2=".css(name, value)"
3=".offset()"
4=".height()"
5=".height(val)"
6=".width()"
7=".width(val)"
8=

[Tag Group - jQuery 1.2.6 Events]
0=".ready(fn)"
1=".bind(type, data, fn)"
2=".one(type, data, fn)"
3=".trigger(type , data )"
4=".triggerHandler(type , data )"
5=".unbind(type , data )"
6=".hover(over, out)"
7=".toggle(fn, fn1)"
8=".blur()"
9=".blur(fn)"
10=".change()"
11=".change(fn)"
12=".click()"
13=".click(fn)"
14=".dblclick()"
15=".dblclick(fn)"
16=".error()"
17=".error(fn)"
18=".focus()"
19=".focus(fn)"
20=".keydown()"
21=".keydown(fn)"
22=".keypress()"
23=".keypress(fn)"
24=".keyup()"
25=".keyup(fn)"
26=".load (fn)"
27=".mousedown (fn)"
28=".mousemove(fn)"
29=".mouseout(fn)"
30=".mouseover(fn)"
31=".mouseup(fn)"
32=".resize(fn)"
33=".scroll(fn)"
34=".select()"
35=".select(fn)"
36=".submit()"
37=".submit(fn)"
38=".unload(fn)"
39=

[Tag Group - jQuery 1.2.6 Effects]
0=".show()"
1=".show(speed, callback)"
2=".hide()"
3=".hide(speed, callback)"
4=".toggle()"
5=".slideDown(speed, callback)"
6=".slideUp(speed, callback)"
7=".slideToggle(speed, callback)"
8=".fadeIn(speed, callback)"
9=".fadeOut(speed, callback)"
10=".fadeTo(speed, opacity, callback)"
11=".animate(params, duration, easing, callback)"
12=".animate(params, options)"
13=".stop()"
14=".queue()"
15=".queue(callback)"
16=".queue(queue)"
17=".dequeue()"
18=

[Tag Group - jQuery 1.2.6 Ajax]
0="jQuery.ajax(options)"
1=".load(url, data, callback)"
2="jQuery.get(url, data, callback)"
3="jQuery.getJSON(url, data, callback)"
4="jQuery.getScript(url, callback)"
5="jQuery.post(url, data, callback, type)"
6=".ajaxComplete(callback)"
7=".ajaxError(callback)"
8=".ajaxSend(callback)"
9=".ajaxStart(callback)"
10=".ajaxStop(callback)"
11=".ajaxSuccess(callback)"
12="jQuery.ajaxSetup(options)"
13=".serialize()"
14=".serializeArray()"
15=

[Tag Group - jQuery 1.2.6 Utilities]
0="jQuery.each(object, callback)"
1="jQuery.extend(target, object1, objectN)"
2="jQuery.grep(array, callback, invert)"
3="jQuery.makeArray(obj)"
4="jQuery.map(array, callback)"
5="jQuery.inArray(value, array)"
6="jQuery.unique(array)"
7="jQuery.isFunction(obj)"
8="jQuery.trim(str)"
9=

[Tag Group - jQuery 1.2.6 Internals]
0="jQuery.data(elem)"
1="jQuery.data(elem, name)"
2="jQuery.data(elem, name, value)"
3="jQuery.removeData(elem)"
4="jQuery.removeData(elem, name)"
5="jQuery.param(obj)"
6=
</code></pre>
<h4>Komplett in einer Liste</h4>
<pre><code>
[Tag Group - jQuery 1.2.6]
0=".add(expr)"
1=".addClass(class)"
2=".after(content)"
3=".ajaxComplete(callback)"
4=".ajaxError(callback)"
5=".ajaxSend(callback)"
6=".ajaxStart(callback)"
7=".ajaxStop(callback)"
8=".ajaxSuccess(callback)"
9=".andSelf()"
10=".animate(params, duration, easing, callback)"
11=".animate(params, options)"
12=".append(content)"
13=".appendTo(content)"
14=".attr(key, fn)"
15=".attr(key, value)"
16=".attr(name)"
17=".attr(properties)"
18=".before(content)"
19=".bind(type, data, fn)"
20=".blur()"
21=".blur(fn)"
22=".change()"
23=".change(fn)"
24=".children(expr)"
25=".click()"
26=".click(fn)"
27=".clone()"
28=".clone(true)"
29=".contents()"
30=".css(name)"
31=".css(name, value)"
32=".css(properties)"
33=".data(name)"
34=".data(name, value)"
35=".dblclick()"
36=".dblclick(fn)"
37=".dequeue()"
38=".each(callback)"
39=".empty()"
40=".end()"
41=".eq(index)"
42=".eq(position)"
43=".error()"
44=".error(fn)"
45=".fadeIn(speed, callback)"
46=".fadeOut(speed, callback)"
47=".fadeTo(speed, opacity, callback)"
48=".filter(expr)"
49=".filter(fn)"
50=".find(expr)"
51=".focus()"
52=".focus(fn)"
53=".get()"
54=".get(index)"
55=".hasClass(class)"
56=".hasClass(class)"
57=".height()"
58=".height(val)"
59=".hide()"
60=".hide(speed, callback)"
61=".hover(over, out)"
62=".html()"
63=".html()"
64=".html(val)"
65=".html(val)"
66=".index(subject)"
67=".insertAfter(content)"
68=".insertBefore(content)"
69=".is(expr)"
70=".keydown()"
71=".keydown(fn)"
72=".keypress()"
73=".keypress(fn)"
74=".keyup()"
75=".keyup(fn)"
76=".load (fn)"
77=".load(url, data, callback)"
78=".map(callback)"
79=".mousedown (fn)"
80=".mousemove(fn)"
81=".mouseout(fn)"
82=".mouseover(fn)"
83=".mouseup(fn)"
84=".next(expr)"
85=".nextAll(expr)"
86=".not(expr)"
87=".offset()"
88=".one(type, data, fn)"
89=".parent(expr)"
90=".parents(expr)"
91=".prepend(content)"
92=".prependTo(content)"
93=".prev(expr)"
94=".prevAll(expr)"
95=".queue()"
96=".queue(callback)"
97=".queue(queue)"
98=".ready(fn)"
99=".remove(expr)"
100=".removeAttr(name)"
101=".removeClass(class)"
102=".removeData(name)"
103=".replaceAll(selector)"
104=".replaceWith(content)"
105=".resize(fn)"
106=".scroll(fn)"
107=".select()"
108=".select(fn)"
109=".serialize()"
110=".serializeArray()"
111=".show()"
112=".show(speed, callback)"
113=".siblings(expr)"
114=".slice(start, end)"
115=".slideDown(speed, callback)"
116=".slideToggle(speed, callback)"
117=".slideUp(speed, callback)"
118=".stop()"
119=".submit()"
120=".submit(fn)"
121=".text()"
122=".text()"
123=".text(val)"
124=".text(val)"
125=".toggle()"
126=".toggle(fn, fn1)"
127=".toggleClass(class)"
128=".trigger(type , data )"
129=".triggerHandler(type , data )"
130=".unbind(type , data )"
131=".unload(fn)"
132=".val()"
133=".val(val)"
134=".val(val)"
135=".width()"
136=".width(val)"
137=".wrap(elem)"
138=".wrap(html)"
139=".wrapAll(elem)"
140=".wrapAll(html)"
141=".wrapInner(elem)"
142=".wrapInner(html)"
143="jQuery(callback)"
144="jQuery(elements)"
145="jQuery(expression, context)"
146="jQuery(html)"
147="jQuery.ajax(options)"
148="jQuery.ajaxSetup(options)"
149="jQuery.data(elem)"
150="jQuery.data(elem, name)"
151="jQuery.data(elem, name, value)"
152="jQuery.each(object, callback)"
153="jQuery.extend(object)"
154="jQuery.extend(target, object1, objectN)"
155="jQuery.fn.extend(object)"
156="jQuery.get(url, data, callback)"
157="jQuery.getJSON(url, data, callback)"
158="jQuery.getScript(url, callback)"
159="jQuery.grep(array, callback, invert)"
160="jQuery.inArray(value, array)"
161="jQuery.isFunction(obj)"
162="jQuery.makeArray(obj)"
163="jQuery.map(array, callback)"
164="jQuery.noConflict()"
165="jQuery.noConflict(extreme)"
166="jQuery.param(obj)"
167="jQuery.post(url, data, callback, type)"
168="jQuery.removeData(elem)"
169="jQuery.removeData(elem, name)"
170="jQuery.trim(str)"
171="jQuery.unique(array)"
172=
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/jquery-funktionen-im-griff/851/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/jquery-funktionen-im-griff/851/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/jquery_logo.gif" />
		<media:content url="http://bueltge.de/wp-content/images/jquery_logo.gif" medium="image">
			<media:title type="html">jQuery Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Conditional Comments effizient nutzen</title>
		<link>http://bueltge.de/conditional-comments-effizient-nutzen/632/</link>
		<comments>http://bueltge.de/conditional-comments-effizient-nutzen/632/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 22:21:11 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=632</guid>
		<description><![CDATA[Conditional Comments sind aus meiner Sicht <a href="http://de.wikipedia.org/wiki/Hack">Hacks</a> und ich will keine Diskussion anstoßen, ob Hacks sinnvoll sind oder man den IE nicht unterstützt. Ab und dann kommt man aus meiner Sicht nicht am Internet Explorer vorbei und dabei sind Conditional Comments eine einfache aber effektive Hilfe.

Sie basieren auf einem absichtlich eingebauten &#8222;HTML-Kommentar&#8220; und daher kann man sie bedenkenlos nutzen. Dies soll nicht heißen, dass man immer diese Möglichkeit nutzen sollte. Aber aus meiner Sicht stellt diese Möglichkeit ein effektives bedenkenloses Werkzeug dar.

In diesem Artikel möchte ich aber eine Überlegung darstellen, die aus meiner Sicht nicht abwegig ist, wenn auch aufwendig. Nicht selten sieht man Websites diverser Entwickler, die bewusst ein unterschiedliches Design in Nicht-IE- und IE-Browsern entwickeln. Der Anwender wird das in der Regel nicht mitbekommen, denn wer surft schon mit zwei Browsern gleichzeitig auf einer Website? Aber der Hintergrund dieser Lösung ist aus meiner Sicht ein anderer. Diese Form der Lösung zeigt, dass man eventuell explizit ein Stylesheet für den IE und Nicht-IE-Browsern machen sollte und nicht ein Stylesheet für Nicht-IE-Browser plus diverse Korrekturen, Hacks und Differenzen.]]></description>
			<content:encoded><![CDATA[<p>Conditional Comments sind aus meiner Sicht <a href="http://de.wikipedia.org/wiki/Hack">Hacks</a> und ich will keine Diskussion anstoßen, ob Hacks sinnvoll sind oder man den IE nicht unterstützt. Ab und dann kommt man aus meiner Sicht nicht am Internet Explorer vorbei und dabei sind Conditional Comments eine einfache aber effektive Hilfe.</p>
<p>Sie basieren auf einem absichtlich eingebauten &#8222;HTML-Kommentar&#8220; und daher kann man sie bedenkenlos nutzen. Dies soll nicht heißen, dass man immer diese Möglichkeit nutzen sollte. Aber aus meiner Sicht stellt diese Möglichkeit ein effektives bedenkenloses Werkzeug dar.</p>
<p>In diesem Artikel möchte ich aber eine Überlegung darstellen, die aus meiner Sicht nicht abwegig ist, wenn auch aufwendig. Nicht selten sieht man Websites diverser Entwickler, die bewusst ein unterschiedliches Design in Nicht-IE- und IE-Browsern entwickeln. Der Anwender wird das in der Regel nicht mitbekommen, denn wer surft schon mit zwei Browsern gleichzeitig auf einer Website? Aber der Hintergrund dieser Lösung ist aus meiner Sicht ein anderer. Diese Form der Lösung zeigt, dass man eventuell explizit ein Stylesheet für den IE und Nicht-IE-Browsern machen sollte und nicht ein Stylesheet für Nicht-IE-Browser plus diverse Korrekturen, Hacks und Differenzen.<br />
<span id="more-632"></span></p>
<div class="contentnavi">
<h4>Inhalt</h4>
<ul>
<li><a href="#ieeo">IE: Entweder oder</a></li>
<li><a href="#iev">via IE Version</a></li>
<li><a href="#php">via PHP</a></li>
<li><a href="#js">via JavaScript</a></li>
</ul>
</div>
<p>Im Grunde entwickelt eine Vielzahl der Webentwickler sicher so <small>(ausgenommen ist Version 8 des IE, in dem Fall könnte es anders werden, aber bis dahin ist sicher noch ein weiter Weg)</small>:</p>
<ol>
<li>Style via CSS erstellen, welches in Nicht-IE-Browsern (< Version 8) läuft</li>
<li>Anpassen an des Stylesheet für den IE kleiner 8</li>
<li>Diverse Hacks im Stylesheet, mitunter viel Code, den Browser mit Standard-Interpretation nicht benötigen</li>
</ol>
<p>Schon jetzt arbeiten aber auch eine ganze Reihe von Entwicklern einen anderen Weg ab. Dieser ist nur in kleinen Punkten abwegig, aus meiner Sicht hat er aber eine große Wirkung.</p>
<ol>
<li>Style via CSS erstellen, welches in Nicht-IE-Browsern (< Version 8) läuft</li>
<li>Stylesheet für den IE kleiner Version 8 erstellen</li>
<li>Einbinden des Stylesheet für den IE mit Hilfe von Conditional Comments</li>
</ol>
<p>Die zweite Lösung sorgt dafür, dass Nicht-IE-Browser keinen unnötigen Code verarbeiten und das Stylesheet schlank bleibt. Conditional Comments haben den Vorteil, sie arbeiten nur im Internet Explorer. Damit sind sie wunderbar geeignet um Anweisungen nur für den IE abzulegen. Dabei kann man zwischen den unterschiedlichen Versionen des IE wählen. Im folgenden sind dazu Beispiele hinterlegt, die das Nutzen an kleinen Beispielen zeigen und die unterschiedlichen Möglichkeiten zeigen.</p>
<h3 id="ieeo">IE: Entweder oder</h3>
<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/internet_explorer.jpg" alt="IE Logo" /><br />
Parallel dazu möchte ich aber noch eine andere Methode zeigen, die dabei sehr direkt unterscheidet. Die beiden folgenden Abfragen gehen davon aus, dass man also ein Stylesheet hat, welches für Nicht-IE-Browser ist und eines, welches explizit für den IE ist. Das heißt, dass das Stylesheet für den IE alle notwendigen Angaben enthält und der IE <em>keine</em> Mischung aus Stylesheet für alle Browser und dem speziellen Stylesheet bekommt.</p>
<h4>Für IE</h4>
<pre><code>
&lt;!--[if IE]&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Nicht (<code>!</code>) für IE</h4>
<pre><code>
&lt;!--[if !IE]&gt;--&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;standard.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;!--&lt;![endif]--&gt;
</code></pre>
<h3 id="iev">IE: Diffizile Abfragen</h3>
<p>Im Gegensatz zur obigen Methode kann man alternativ auch nur diverse Stylesheets erarbeiten, die die Probleme im IE mit dem Standard-Stylesheet bearbeiten und je nach Version des IE einbinden. Dazu stehen diverse Conditional Comments-Abfragen bereit.</p>
<p>Alternativ kann man aber auch, wenn es denn sein muss/soll, diverse eigenständige Stylesheets für die jeweilige betroffene Version des IE erstellen und wie oben angesprochen einbinden.</p>
<h4>Für IE 5 und größer</h4>
<pre><code>
&lt;!--[if gte IE 5]&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Für IE, kleiner als Version 6</h4>
<pre><code>
&lt;!--[if lt IE 6]&gt;
	&lt;link rel="stylesheet" href="ie.css" type="text/css" media="screen" /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Für IE, kleiner oder gleich als Version 5.5</h4>
<pre><code>
&lt;!--[if lte IE 5.5]&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Für IE, größer als Version 6</h4>
<pre><code>
&lt;!--[if gt IE 6]&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Hinweis zum Syntax</h4>
<ul>
<li>gt: greater than (größer als)</li>
<li>gte: greater than or equal to (größer als oder gleich)</li>
<li>lt: less than (kleiner als)</li>
<li>lte: less than or equal to (kleiner als oder gleich)</li>
</ul>
<h3 id="php">Via PHP</h3>
<p>Aber auch PHP gibt uns die Möglichkeit den Browser abzufragen und ab und dann kann die Lösung sinnvoll sei. Aus meiner Sicht ist sie es aber nicht für die Implementierung des Stylesheet für den IE. Dort sind die Conditional Comments sehr gut geeignet.<br />
Der Vollständigkeit aber und da man ab und dann die Lösung gebrauchen kann, lege ich meine Codeschnippsel hier ab.</p>
<pre><code>
&lt;?php
	if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') ){
		if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') ){
			$browser = 'Netscape (Gecko/Netscape)';
		}
		else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') ){
			$browser = 'Mozilla Firefox (Gecko/Firefox)';
		}
		else{
			$browser = 'Mozilla (Gecko/Mozilla)';
		}
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ){
		$browser = 'Internet Explorer (MSIE/Compatible)';
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Safari') ){
		$browser = 'Safari';
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') === true){
		$browser = 'Opera';
	}
	else{
		$browser = 'andere Browser';
	}
	echo '&lt;h2&gt;Dein Browser ' . $browser . '&lt;/h2&gt;';
?&gt;
</code></pre>
<pre><code>
&lt;?php
	if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Safari') ) {
?&gt;
		&lt;link rel="stylesheet" type="text/css" href="safari.css" media="screen" /&gt;
&lt;?php
	}
?&gt;
</code></pre>
<h3 id="js">Via JavaScript</h3>
<p>Auch im Bereich JavaScript kann man diverse Abfragen starten um den Browser zu erkennen, allerdings geht das nur, wenn JS beim Anwender auch aktiv ist. Für diese Möglichkeit gibt es die unterschiedlichsten Möglichkeiten und eine sehr kleine Funktion stammt dabei aus meinem Archiv.<br />
Auch dieses soll hier nicht groß erläutert werden, ich denke, dazu gibt es ausreichend und bessere Seiten.</p>
<pre><code>
function getBrowserType() {
	var detect = navigator.userAgent.toLowerCase();
	var browser;
	var doCheckIt = function (bString) {
		place = detect.indexOf(bString) + 1;
		return place;
	};
	if (doCheckIt('konqueror')) { browser = "konqueror"; }
	else if (doCheckIt('safari')) { browser = "safari"; }
	else if (doCheckIt('omniweb')) { browser = "omniweb"; }
	else if (doCheckIt('opera')) { browser = "opera"; }
	else if (doCheckIt('webtv')) { browser = "webtv"; }
	else if (doCheckIt('icab')) { browser = "icab"; }
	else if (doCheckIt('msie')) { browser = "msie"; }
	else if (doCheckIt('firefox')) { browser = "firefox"; }
	else if (!doCheckIt('compatible')) { browser = "nn"; }
	return browser;
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/conditional-comments-effizient-nutzen/632/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/conditional-comments-effizient-nutzen/632/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/internet_explorer.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/internet_explorer.jpg" medium="image">
			<media:title type="html">IE Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Rundungen mit JavaScript Test erweitert</title>
		<link>http://bueltge.de/rundungen-mit-javascript-test-erweitert/847/</link>
		<comments>http://bueltge.de/rundungen-mit-javascript-test-erweitert/847/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 13:49:39 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Border]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Radius]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=847</guid>
		<description><![CDATA[In der Vergangenheit habe ich ein kleines <a href="http://bueltge.de/webdesign-rundungen-mit-javascript/511/">Testscript</a> erstellt, welches einige Lösungen vergleicht, die mittels JavaScript und diverse Hilfen wie Bilder, CSS oder Libraries die Rundungen im Webdesign erleichtern sollen. Mehr Infos im zugehörigen <a href="http://bueltge.de/webdesign-rundungen-mit-javascript/511/">Beitrag</a>.

Aktuell gefällt mir die Lösung &#8222;<a href="http://dillerdesign.com/experiment/DD_roundies/">DD_roundies</a>&#8220; sehr gut und so habe ich sie mit in den Test aufgenommen.]]></description>
			<content:encoded><![CDATA[<p>In der Vergangenheit habe ich ein kleines <a href="http://bueltge.de/test/border_radius_js.php">Testscript</a> erstellt, welches einige Lösungen vergleicht, die mittels JavaScript und diverse Hilfen wie Bilder, CSS oder Libraries die Rundungen im Webdesign erleichtern sollen. Mehr Infos im zugehörigen <a href="http://bueltge.de/webdesign-rundungen-mit-javascript/511/">Beitrag</a>.</p>
<p>Aktuell gefällt mir die Lösung &#8222;<a href="http://dillerdesign.com/experiment/DD_roundies/">DD_roundies</a>&#8220; sehr gut und so habe ich sie mit in den <a href="http://bueltge.de/test/border_radius_js.php">Test</a> aufgenommen. Ich denke, dass man so einen recht schönen Vergleich ziehen kann. Sicherlich werde ich damit nicht immer auf dem aktuellen Stand sein und wollen. Aber so kann man in den unterschiedlichen Browsern vergleichen und sich eventuell für eine der Lösungen entscheiden. <span id="more-847"></span><br />
Auch gibt es noch weitere Ansätze im Netz, bisher ist mir aber keines aufgefallen, außer dem genannten DD_roundies, um die Test-Seite auszubauen.<br />
Hinweise sind gern willkommen!<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/rundungen-mit-javascript-test-erweitert/847/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/rundungen-mit-javascript-test-erweitert/847/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>JavaScript-Bibliotheken in und aus WordPress nutzen</title>
		<link>http://bueltge.de/javascript-bibliotheken-in-und-aus-wordpress-nutzen/808/</link>
		<comments>http://bueltge.de/javascript-bibliotheken-in-und-aus-wordpress-nutzen/808/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 23:12:04 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Lightbox]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=808</guid>
		<description><![CDATA[Entwickelt man explizit in und für WordPress, dann empfiehlt sich die Verwendung einer Library aus dem Core und einem Plugin für die jeweilige Library mit dem gewünschtem Effekt.
Gleiches gilt für Theme- und Plugin-Autoren. Realisiert man mit den Funktionen von WordPress die Implementierung von JavaScript, dann werden Komplikationen verringert und die Kompatibilität unter den Plugins ist wesentlicher höher.
Wie man JavaScript aus dem Core nutzt - dies möchte ich am Beispiel der Thickbox zeigen.

In der einen oder anderen Website möchte man den „Lightbox“-Effekt einbinden und sucht nach einer Möglichkeit. Dabei wird man auf sehr viele unterschiedliche Umsetzungen stoßen. Schauen wir uns eine an, die ohne Plugin auskommt.
WordPress bringt <a href="http://jquery.com/demo/thickbox/">Thickbox</a> im Standard schon mit und kann daher ohne großen Aufwand genutzt werden.]]></description>
			<content:encoded><![CDATA[<p>Entwickelt man explizit in und für WordPress, dann empfiehlt sich die Verwendung einer Library aus dem Core und einem Plugin für die jeweilige Library mit dem gewünschtem Effekt.<br />
Gleiches gilt für Theme- und Plugin-Autoren. Realisiert man mit den Funktionen von WordPress die Implementierung von JavaScript, dann werden Komplikationen verringert und die Kompatibilität unter den Plugins ist wesentlicher höher.<br />
Wie man JavaScript aus dem Core nutzt - dies möchte ich am Beispiel der Thickbox zeigen.</p>
<p>In der einen oder anderen Website möchte man den „Lightbox“-Effekt einbinden und sucht nach einer Möglichkeit. Dabei wird man auf sehr viele unterschiedliche Umsetzungen stoßen. Schauen wir uns eine an, die ohne Plugin auskommt.<br />
WordPress bringt <a href="http://jquery.com/demo/thickbox/">Thickbox</a> im Standard schon mit und kann daher ohne großen Aufwand genutzt werden.<br />
<span id="more-808"></span></p>
<h3><code>wp_enqueue_script()</code></h3>
<p>Seit Version 2.1 von WordPress ist die Funktion <code>wp_enqueue_script()</code> enthalten, welche das einbinden von JavaScript-Bibliotheken sehr vereinfacht und ein Prüfung vornimmt. Damit muss also das Theme nicht mit den nötigen JavaScripts versorgt werden. Die Integration ist einfach und sauber. </p>
<h3><code>wp_enqueue_style()</code></h3>
<p>Als weitere Funktion in diesem Zusammenhang sollte man sich <code>wp_enqueue_style()</code> merken. Damit werden entsprechende CSS-Dateien eingebunden.<br />
Beiden Funktion verstehen eine Reihe von Parametern, wobei der Pflichtparameter die Übergabe des Schlüssels darstellt. Für das genannte Beispiel benötigt man Thickbox, was als Plugin für jQuery erschienen ist. Daher müsste man also beiden Dateien laden, oder?</p>
<pre><code>
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'thickbox' );
</code></pre>
<p>WordPress verwaltet aber die Abhängigkeiten, so dass es reicht, wenn man die Erweiterung angibt und WordPress erkennt, dass jQuery notwendig ist. Es genügt also der Aufruf <code>wp_enqueue_script( 'thickbox' );</code>. Damit wird jQuery mit geladen und in der richtigen Reihenfolge im Code eingefügt. Gleiches gilt, wenn andere Aufrufe jQuery benötigen. WordPress achtet darauf und läßt nur einen Aufruf zu, so dass die Bibliothek oder diverse Erweiterungen für die Libraray nicht mehrfach geladen werden. </p>
<p>Damit haben wir im Beispiel nun die nötigen JavaScript-Dateien eingebunden, zusätzlich benötigen wir aber ein Style, um den Effekt der Thickbox auch entsprechend in Scene zu setzen.<br />
Um das Standard-Design von WordPress einzubinden genügt der Aufruf des Schlüssels <em>Thickbox</em> für den CSS-Aufruf <code>wp_enqueue_style( 'thickbox' )</code>.</p>
<p>Das Design kann natürlich an die eigenen Bedürfnisse angepasst werden. Dazu greift klassisch via CSS ein und erweitert das bestehende Standard-Style aus dem Core von WordPress oder schreibt ein komplett neues Style.<br />
Hier mal ein kleines einfaches Beispiel um das Schließen-Icon dem Core mit hinzu zunehmen.</p>
<pre><code>
#TB_window a:link {
	color: transparent !important;
	background: url('http:/examble.com/wp-includes/js/thickbox/tb-close.png') no-repeat;
	padding: 0 4px !important;
}

#TB_window a:hover {
	background: red;
}
</code></pre>
<p>Will man sich um nichts kümmern, was aber nur sauber im Backend von WordPress funktioniert (ansonsten sind die Icons nicht verfügbar, da die im JS definiert wurden), dann reicht der Aufruf <code>add_thickbox()</code>. Damit wird alles zum &#8222;Leben&#8220; von Thickbox eingebunden.</p>
<p>Um nun aber auch diverse Links mit dem Effekt zu verknüpfen muss man dem Link noch die Klasse <em>thickbox</em> hinzufügen. Damit wird der Effekt dann auch genutzt.<br />
Im einfachsten Fall könnte das wie folgt aussehen.</p>
<pre><code>
&lt;a href="http://examble.com/image.png" class="thickbox"&gt;
	&lt;img src="http://examble.com/image-thumb.png" alt="Image" /&gt;
&lt;/a&gt;
</code></pre>
<h3>Klasse automatisch setzen</h3>
<p>Alternativ kann man auch die Klasse automatisch setzen. Die folgende kleine Funktion in der <code>functions.php</code> des Themes hinterlegt tut dies, ist aber keine Garantie auf Richtigkeit in allen Fällen.</p>
<pre><code>
/*
 * Thickbox scan, add class for a
 */
function fb_add_thickbox($content){

	$content = preg_replace('/&lt;a(.*?)href="(.*?).(jpg|jpeg|png|gif|bmp|ico)"(.*?)&gt;&lt;img/U', '&lt;a$1href="$2.$3" $4 class="thickbox"&gt;&lt;img', $content);

	return $content;
}
add_filter('the_content', 'fb_add_thickbox', 2);
</code></pre>
<h3>Andere JavaScripte</h3>
<p>WordPress bietet dem Entwickler eine ganze Reihe weiterer Bibliotheken und Erweiterungen zum Nutzen an. Man ist nicht auf jQuery beschränkt. Ebenso sind viele bekannte Erweiterungen der einzelnen Bibliotheken im Core. Die Einbindung durch die gezeigte Funktion sorgt für wenig Schwierigkeiten und die einzelnen Bibliotheken behaken sich nicht gegenseitig. Ebenso werden nicht unnötig diverse Bibliotheken mehrfach geladen, wie das nicht selten bei einigen Plugins so ist.</p>
<p>Eine ganze Reihe von Schlüsseln findet man in der <code>/wp-includes/script-loader.php</code>. Das Umschauen lohnt sich. Im folgenden nur eine Auswahl von Schlüsseln.</p>
<ul>
<li><code>prototype</code></li>
<li><code>scriptaculous-root</code></li>
<li><code>scriptaculous-builder</code></li>
<li><code>scriptaculous-dragdrop</code></li>
<li><code>scriptaculous-effects</code></li>
<li><code>scriptaculous-slider</code></li>
<li><code>scriptaculous-sound</code></li>
<li><code>scriptaculous-controls</code></li>
<li><code>jquery</code></li>
<li><code>jquery-form</code></li>
<li><code>jquery-color</code></li>
<li><code>interface</code></li>
<li><code>suggest</code></li>
<li><code>schedule</code></li>
<li><code>jquery-hotkeys</code></li>
<li><code>thickbox</code></li>
<li><code>swfupload</code></li>
<li><code>swfupload-degrade</code></li>
<li><code>swfupload-swfobject</code></li>
<li><code>jquery-ui-core</code></li>
<li><code>jquery-ui-tabs</code></li>
<li><code>jquery-ui-sortable</code></li>
<li><code>jquery-ui-draggable</code></li>
<li><code>jquery-ui-resizable</code></li>
<li><code>jquery-ui-dialog</code></li>
<li><code>wp-gears</code></li>
<li><code>farbtastic</code></li>
</ul>
<p>Übergibt man einen der Schlüssel, so kann man auch in einem Array übergeben, welche Erweiterungen man benötigt.</p>
<pre><code>
wp_enqueue_script( 'scriptaculous', '', array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls'), '1.8.0')
</code></pre>
<h3>Eigene Scripte</h3>
<p>Alternativ kann man mit Hilfe der genannten Funktion auch eigene Scripte einbinden. Ein Beispiel soll es aufzeigen.</p>
<pre><code>
wp_enqueue_script( 'my_script',  plugins_url($path = 'my_plugin_folder/js/my_script.js'), array('jquery') );
</code></pre>
<p>Dabei ist man nicht auf die Verwendung von js-Dateien festgelegt. So kann man auch mit PHP arbeiten, wenn man diverse Variablen etc. aus PHP nutzen möchte.</p>
<pre><code>
wp_enqueue_script( 'my_script',  plugins_url($path = 'my_plugin_folder/js/my_script.php'), array('jquery') );
</code></pre>
<p>Wird eine bestimmte Version einer Library voraus gesetzt, so kann man die Version mit übergeben.</p>
<pre><code>
wp_enqueue_script( 'my_script',  plugins_url($path = 'my_plugin_folder/js/my_script.php'), array( 'jquery'), '1.2.1.3' );
</code></pre>
<h3><code>wp_deregister_script()</code></h3>
<p>Ab und dann will man aber eventuell ein Script deaktivieren - auch dafür gibt es eine Funktion: <code>wp_deregister_script( 'jquery' );</code>.<br />
Das Beispiel deaktiviert jQuery aus dem Core. Damit könnte man nun beispielsweise jQuery von einer anderen externen Quelle laden.</p>
<pre><code>
wp_deregister_script( 'jquery' );
wp_enqueue_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js', array(), '1.2.6' );
</code></pre>
<h3>Fazit</h3>
<p>Der kleine Einblick soll zeigen, wie man Komplikationen mit anderen Bibliotheken durch die Verwendung von Plugins verhindern kann. Die Verwendung der Funktion ist nicht auf Plugins beschränkt und kann ebenfalls im Theme von WordPress eingesetzt werden.</p>
<h3>Weitere Lesetipps</h3>
<ul>
<li><a href="http://pressedwords.com/wordpress-javascript-compatibility/">The Right Way to Use JavaScript in Your WordPress Plugin</a></li>
<li><a href="http://comox.textdrive.com/pipermail/wp-hackers/2008-April/019415.html">Möglichkeit zu <code>load[$mypage]</code></a></li>
</ul>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/javascript-bibliotheken-in-und-aus-wordpress-nutzen/808/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/javascript-bibliotheken-in-und-aus-wordpress-nutzen/808/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Pacman</title>
		<link>http://bueltge.de/pacman/765/</link>
		<comments>http://bueltge.de/pacman/765/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 09:59:19 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Zocken]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=765</guid>
		<description><![CDATA[Seit ich an Bit und Bytes denken kann, kenne ich das Spiel Pacman; auf den unterschiedlichsten Plattformen bis zum berühmten Automaten, überall ist Pacman ein Begriff und verfügbar. Nun gibt es eine Portierung in JavaScript, womit man es im Browser spielen kann, schnell verfügbar und zwischendurch eine Entspannung wert - Pacman. Die Aufgabe des Spiels [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/pacman.png" alt="Pacman Screenshot" /><br />
Seit ich an Bit und Bytes denken kann, kenne ich das Spiel Pacman; auf den unterschiedlichsten Plattformen bis zum berühmten Automaten, überall ist Pacman ein Begriff und verfügbar.<br />
Nun gibt es eine Portierung in JavaScript, womit man es im Browser spielen kann, schnell verfügbar und zwischendurch eine Entspannung wert - <a href="http://www.digitalinsane.com/api/yahoo/pacman/">Pacman</a>.<br />
Die Aufgabe des Spiels passt ja quasi zum Alltag des Lebens: Fressen und gefressen werden.</p>
<blockquote><p>Pac-Man ist ein Arcade Game und Videospiel, das am 12. Mai 1980 von Namco in Japan als „Puck Man“ veröffentlicht wurde. Der Name leitet sich von der japanischen Lautmalerei paku paku für „essen“ (vergleichbar etwa mit „happa-happa“ im Deutschen) und der Puck-förmigen Gestalt der Hauptfigur her; zudem bedeutet puck auf Englisch auch „Kobold“.<br />
<cite><a href="http://de.wikipedia.org/wiki/Pacman">Wikipedia</a></cite></p></blockquote>
<p><a href="http://www.digitalinsane.com/api/yahoo/pacman/">Pacman</a> spielen</p>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/pacman/765/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/pacman/765/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/pacman.png" />
		<media:content url="http://bueltge.de/wp-content/images/pacman.png" medium="image">
			<media:title type="html">Pacman Screenshot</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Bombermann</title>
		<link>http://bueltge.de/bombermann/738/</link>
		<comments>http://bueltge.de/bombermann/738/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 12:44:29 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Zocken]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=738</guid>
		<description><![CDATA[Wer schon ein wenig länger an der Blackbox sitzt, der kennt sicher Bombermann und kann eine Auszeit gebrauche - aktuell hat Munteanu Gabriel Bomberman mit der JavaScript Libaray Mootools realisiert. Leider kein 5 Spielermodus, sonst aber schön umgesetzt. &#169; Frank B&#252;ltge, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8) Danke für das Abonnieren meines [...]]]></description>
			<content:encoded><![CDATA[<p>Wer schon ein wenig länger an der Blackbox sitzt, der kennt sicher Bombermann und kann eine Auszeit gebrauche - aktuell hat Munteanu Gabriel <a href="http://www.e-forum.ro/bomberman/dynagame.html">Bomberman</a> mit der JavaScript Libaray <a href="http://mootools.net/">Mootools</a> realisiert. Leider kein 5 Spielermodus, sonst aber schön umgesetzt.<br />
<img class="centered" src="http://bueltge.de/wp-content/images/bombermann.png" alt="Screenshot Bombermann in JS" /><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/bombermann/738/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/bombermann/738/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/bombermann.png" />
		<media:content url="http://bueltge.de/wp-content/images/bombermann.png" medium="image">
			<media:title type="html">Screenshot Bombermann in JS</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Lightbox Clones Matrix</title>
		<link>http://bueltge.de/lightbox-clones-matrix/651/</link>
		<comments>http://bueltge.de/lightbox-clones-matrix/651/#comments</comments>
		<pubDate>Fri, 16 May 2008 20:43:25 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Lightbox]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[script.aculo.us]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=651</guid>
		<description><![CDATA[Mit Lightbox gab es eine JavaScript-Library, die das Darstellen von Bildern sehr verschönte. Die Entwicklung dieser Anforderung hört damit nicht auf und mittlerweile hat man kaum noch einen Überblick über die unterschiedlichen Anforderungen, geschweige denn wenn man mit einigen Anforderungen in die Suche geht, zum Beispiel Datenmenge, Frameworkbasis etc.. Dieses Problem hatte auch Ozh und [...]]]></description>
			<content:encoded><![CDATA[<p>Mit <a href="http://www.huddletogether.com/projects/lightbox/">Lightbox</a> gab es eine JavaScript-Library, die das Darstellen von Bildern sehr verschönte. Die Entwicklung dieser Anforderung hört damit nicht auf und mittlerweile hat man kaum noch einen Überblick über die unterschiedlichen Anforderungen, geschweige denn wenn man mit einigen Anforderungen in die Suche geht, zum Beispiel Datenmenge, Frameworkbasis etc..</p>
<p>Dieses Problem hatte auch <a href="http://planetozh.com/">Ozh</a> und erstellte eine <a href="http://planetozh.com/projects/lightbox-clones/">Matrix</a> mit einer glasklaren Übersicht, die sich nach jedem Gesichtspunkt sortieren lässt. Dabei kann man schön das eine oder andere Tool finden. Ebenso kann man Filter setzen, so dass sich das Ergebnis schnell einschränken lässt und man zum erwünschten Ziel kommt.</p>
<p><a href="http://planetozh.com/projects/lightbox-clones/"><img class="centered" src="http://bueltge.de/wp-content/images/lightbox-matrix.png" alt="Lightbox Matrix" title="Lightbox Cloen Matrix von Ozh" /></a><br />
<span id="more-651"></span><br />
Im <a href="http://planetozh.com/blog/2008/04/the-lightbox-clone-matrix-compare-30-lightbox-scripts/">zugehörigen Beitrag</a> erklärt Ozh Hintergründe und Funktion, wobei die Matrix selbsterklärend ist. Ebenso kann man in den <a href="http://planetozh.com/blog/2008/04/the-lightbox-clone-matrix-compare-30-lightbox-scripts/#comments">Kommentaren</a> zum Beitrag weitere Librarys hinterlassen, falls doch eine fehlt.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/lightbox-clones-matrix/651/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/lightbox-clones-matrix/651/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/lightbox-matrix.png" />
		<media:content url="http://bueltge.de/wp-content/images/lightbox-matrix.png" medium="image">
			<media:title type="html">Lightbox Cloen Matrix von Ozh</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Cross Browser Debugger</title>
		<link>http://bueltge.de/cross-browser-debugger/630/</link>
		<comments>http://bueltge.de/cross-browser-debugger/630/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 11:50:31 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Webdeveloper]]></category>

		<guid isPermaLink="false">http://bueltge.de/cross-browser-debugger/630/</guid>
		<description><![CDATA[Firebug ist ein viel geschätztes Werkzeug unter Webentwicklern. Leider ist es in seiner vollen Form nur für den Browser Firefox verfügbar. Aus diesem Grunde hat Azer Koçulu, JavaScript Coder aus Leidenschaft, ein Script entwickelt, mit dem man diese Aufgabe durch einfaches Hinzufügen des Scriptes in der zu debuggenden Seite erledigen kann - in jedem Browser, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.getfirebug.com/">Firebug</a> ist ein viel geschätztes Werkzeug unter Webentwicklern.<br />
Leider ist es in seiner vollen Form nur für den Browser Firefox verfügbar. Aus diesem Grunde hat <a href="http://azer.r92.org/">Azer Koçulu</a>, JavaScript Coder aus Leidenschaft, ein <a href="http://kodfabrik.com/app/pi.debugger/">Script</a> entwickelt, mit dem man diese Aufgabe durch einfaches Hinzufügen des Scriptes in der zu debuggenden Seite erledigen kann - in jedem Browser, der JS versteht, der <a href="http://kodfabrik.com/app/pi.debugger/">pi.debugger</a>.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/pi-debugger.png" alt="pi.debugger" /><br />
<span id="more-630"></span></p>
<ul>
<li><a href="http://code.google.com/p/pi-js/">Project-Seite pi.debugger</a></li>
<li><a href="http://kodfabrik.com/app/pi.debugger/">Demo</a></li>
</ul>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/cross-browser-debugger/630/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/cross-browser-debugger/630/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/pi-debugger.png" />
		<media:content url="http://bueltge.de/wp-content/images/pi-debugger.png" medium="image">
			<media:title type="html">pi.debugger</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>jQuery Bilder Zoom</title>
		<link>http://bueltge.de/jquery-bilder-zoom/626/</link>
		<comments>http://bueltge.de/jquery-bilder-zoom/626/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 08:38:46 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bueltge.de/jquery-bilder-zoom/626/</guid>
		<description><![CDATA[Ein sehr schönes Plugin für das schlanke JS-Framework jQuery hat Janis Skarnelis veröffentlicht. Damit lassen sich sehr schöne Galerien und einfache Zooms erstellen. Die Inspiration war Lightbox, wie so oft der Vorreiter der Bilderzooms. Die Einbindung ist einfach und schnell erklärt. Aktuell gibt es eine Seite zum Plugin, inklusive Demo, Doku. Allerdings ist die Dokumentation [...]]]></description>
			<content:encoded><![CDATA[<p>Ein sehr schönes Plugin für das schlanke JS-Framework <a href="http://jquery.com">jQuery</a> hat <a href="http://klade.lv/">Janis Skarnelis</a> veröffentlicht. Damit lassen sich sehr schöne Galerien und einfache Zooms erstellen. Die Inspiration war Lightbox, wie so oft der Vorreiter der Bilderzooms.</p>
<p><a href="http://fancy.klade.lv/"><img class="centeredob" src="http://bueltge.de/wp-content/images/fancybox.gif" alt="FancyBox Logo" /></a><span id="more-626"></span><br />
Die Einbindung ist einfach und schnell erklärt. Aktuell gibt es eine <a href="http://fancy.klade.lv/">Seite zum Plugin</a>, inklusive Demo, Doku. Allerdings ist die Dokumentation sehr schmal, so dass man den Quellcode der Seite nutzen sollte. Aber da es sich um Version 0.1Beta handelt, können wir sicher auf mehr Funktionen und Dokumentation hoffen. Die verschiedenen Parameter lassen sich aktuell auch nicht per Doku erkunden, dazu muss der Quellcode herhalten, der aber übersichtlich ist.</p>
<p>Das Plugin gibt den Bildern Schatten, ermöglicht die Gruppierung von Bildern und skaliert automatisch.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/jquery-bilder-zoom/626/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/jquery-bilder-zoom/626/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/fancybox.gif" />
		<media:content url="http://bueltge.de/wp-content/images/fancybox.gif" medium="image">
			<media:title type="html">FancyBox Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>jQuery Effekte leicht gemacht</title>
		<link>http://bueltge.de/jquery-effekte-leicht-gemacht/609/</link>
		<comments>http://bueltge.de/jquery-effekte-leicht-gemacht/609/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 12:06:10 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bueltge.de/jquery-effekte-leicht-gemacht/609/</guid>
		<description><![CDATA[Die JavaScript-Bibliothek jQuery erfreut sich zunehmender Beliebtheit, was unter anderem an der einfache Verwendung und der relativ wenigen Bytes liegt. Trotzdem bringen die meisten Effekt-Methoden eine ganze Reihe von Parametern mit sich. Damit ist der eine oder andere überfordert oder möchte sich mit diesen Punkten nicht beschäftigen. Diesem &#8222;Problem&#8220; und der damit verbundenen Geschwindigkeit schafft [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/jquery_logo.gif" alt="jQuery Logo" /></p>
<p>Die JavaScript-Bibliothek jQuery erfreut sich zunehmender Beliebtheit, was unter anderem an der einfache Verwendung und der relativ wenigen Bytes liegt. Trotzdem bringen die meisten Effekt-Methoden eine ganze Reihe von Parametern mit sich. Damit ist der eine oder andere überfordert oder möchte sich mit diesen Punkten nicht beschäftigen.<span id="more-609"></span></p>
<p>Diesem &#8222;Problem&#8220; und der damit verbundenen Geschwindigkeit schafft das <a href="http://www.learningjquery.com/2008/02/simple-effects-plugins">Simple Effects Plugin</a> Abhilfe, welches nach dem Einbinden eine Standard-Methode <code>.animate()</code> liefert. Damit ist die Geschwindigkeit gleich und der Effekt immer der gleiche in der Nutzung, wenn eingebunden.</p>
<p><a href="http://www.learningjquery.com/2008/02/simple-effects-plugins">Demo und HowTo</a> ist wie immer bei das Blog &#8222;<a href="http://www.learningjquery.com">Learning jQuery</a>&#8220; übersichtlich und klar.</p>
<p><cite><a href="http://www.learningjquery.com/2008/02/simple-effects-plugins">Simple Effects Plugin</a> für jQuery</cite><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/jquery-effekte-leicht-gemacht/609/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/jquery-effekte-leicht-gemacht/609/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/jquery_logo.gif" />
		<media:content url="http://bueltge.de/wp-content/images/jquery_logo.gif" medium="image">
			<media:title type="html">jQuery Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>jQuery Plugin ScrollTo</title>
		<link>http://bueltge.de/jquery-plugin-scrollto/601/</link>
		<comments>http://bueltge.de/jquery-plugin-scrollto/601/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 12:15:58 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bueltge.de/jquery-plugin-scrollto/601/</guid>
		<description><![CDATA[Mal wieder jQuery - heute soll es um eine Bereicherung des Frameworks gehen - ScrollTo von Ariel Flesler. Sehr viele Möglichkeiten sorgen für ordentlich Bewegung auf der Webseite. Das Plugin is einfach und schnell eingebunden und dann stehen eine ganze Reihe an Funktionen zur Verfügung. Das Demo ist eindrucksvoll und mit dem jeweiligen Syntax hinterlegt, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/jquery_logo.gif" alt="jQuery Logo" /></p>
<p>Mal wieder <a href="http://jquery.com">jQuery</a> - heute soll es um eine Bereicherung des Frameworks gehen - <a href="http://www.freewebs.com/flesler/jQuery.ScrollTo/">ScrollTo</a> von Ariel Flesler.</p>
<p>Sehr viele Möglichkeiten sorgen für ordentlich Bewegung auf der Webseite. Das Plugin is einfach und schnell eingebunden und dann stehen eine ganze Reihe an Funktionen zur Verfügung.</p>
<p>Das <a href="http://www.freewebs.com/flesler/jQuery.ScrollTo/">Demo</a> ist eindrucksvoll und mit dem jeweiligen Syntax hinterlegt, so dass man schnell erkennt, wie es genutzt wird und mit welchem Resultat.<span id="more-601"></span> Ansonsten steht als Alternative noch die <a href="http://plugins.jquery.com/project/ScrollTo">jQuery-Projektseite</a> zur Verfügung.</p>
<p>jQuery ist im übrigen die Spielwiese von Ariel Flesler, der noch viele weitere leckere Plugins für den einen oder anderen Zweck parat hat, <a href="http://flesler.blogspot.com/">das Blog von ihm</a> verrät mehr dazu.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/jquery-plugin-scrollto/601/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/jquery-plugin-scrollto/601/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/jquery_logo.gif" />
		<media:content url="http://bueltge.de/wp-content/images/jquery_logo.gif" medium="image">
			<media:title type="html">jQuery Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Spellify - passendes Wort live</title>
		<link>http://bueltge.de/spellify-passendes-wort-live/595/</link>
		<comments>http://bueltge.de/spellify-passendes-wort-live/595/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 09:01:05 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[script.aculo.us]]></category>
		<category><![CDATA[Translate]]></category>

		<guid isPermaLink="false">http://bueltge.de/spellify-live-uebersetzen/595/</guid>
		<description><![CDATA[Sehr nützlich für das eine oder andere Projekt - Anbieten eines Syntax direkt bei der Eingabe durch den User. Funktionieren tut das mittels eines JavaScriptes und der API des Google Sprachservices. Die Demo überzeugt und die Dokumentation inkl. Download erklärt wunderbar wie es geht. Allerdings kommt das Script nicht ohne die JS-Frameworks Prototype und script.aculo.us [...]]]></description>
			<content:encoded><![CDATA[<p>Sehr nützlich für das eine oder andere Projekt - Anbieten eines Syntax direkt bei der Eingabe durch den User. Funktionieren tut das mittels eines JavaScriptes und der API des Google Sprachservices.</p>
<p>Die <a href="http://spellify.com/formdemo.html">Demo</a> überzeugt und die <a href="http://spellify.com/download.html">Dokumentation inkl. Download</a> erklärt wunderbar wie es geht. Allerdings kommt das Script nicht ohne die JS-Frameworks <a href="http://www.prototypejs.org/">Prototype</a> und <a href="http://script.aculo.us/">script.aculo.us</a> aus.  Damit wird die Größe der geladenen Daten gleich enorm groß. Somit nur lohnend, wenn der Service wirklich genutzt wird und keine Spielerei für einen von tausend ist.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/spellify-passendes-wort-live/595/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/spellify-passendes-wort-live/595/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
	</channel>
</rss>

