<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PehBehBeh &#187; JavaScript</title>
	<atom:link href="http://pehbehbeh.de/webentwicklung/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://pehbehbeh.de</link>
	<description>Erfahrungen eines Hobby-Webentwicklers</description>
	<lastBuildDate>Sun, 05 Feb 2012 21:12:57 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>money.js &#8211; Währungsumrechnung mit aktuellen Wechselkursen</title>
		<link>http://pehbehbeh.de/webentwicklung/javascript/waehrungsumrechnung-wechselkurs/</link>
		<comments>http://pehbehbeh.de/webentwicklung/javascript/waehrungsumrechnung-wechselkurs/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 23:09:27 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Bibliothek]]></category>
		<category><![CDATA[money.js]]></category>
		<category><![CDATA[Open Source Exchange Rates API]]></category>
		<category><![CDATA[Währungsumrechnung]]></category>
		<category><![CDATA[Wechselkurs]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=1993</guid>
		<description><![CDATA[<img width="64" height="64" src="http://pehbehbeh.de/wp-content/uploads/2011/11/money.png" class="attachment-post-thumbnail wp-post-image" alt="Geld" title="Geld" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" />money.js ist eine kleine (&#60;1kb) JavaScript-Bibliothek zur Währungsumrechnung. Gedacht ist die Zusammenarbeit mit der stündlich aktualisierten Open Source Exchange Rates API. Es können jedoch auch eigene Wechselkurse angegeben werden. Beispiele Hier ein paar der offiziellen Beispiele: 1 2 3 4 5 &#8230; <a href="http://pehbehbeh.de/webentwicklung/javascript/waehrungsumrechnung-wechselkurs/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<img width="64" height="64" src="http://pehbehbeh.de/wp-content/uploads/2011/11/money.png" class="attachment-post-thumbnail wp-post-image" alt="Geld" title="Geld" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" /><p><a href="http://josscrowcroft.github.com/money.js/">money.js</a> ist eine kleine<em> (&lt;1kb)</em> JavaScript-Bibliothek zur Währungsumrechnung. Gedacht ist die Zusammenarbeit mit der stündlich aktualisierten <a href="http://josscrowcroft.github.com/open-exchange-rates/">Open Source Exchange Rates API</a>. Es können jedoch auch eigene Wechselkurse angegeben werden.</p>
<p><hr style="clear: both;" /></p>
<h2>Beispiele</h2>
<p>Hier ein paar der offiziellen Beispiele:
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="co1">// From any currency, to any currency:</span>
fx.<span class="me1">convert</span><span class="br0">&#40;</span><span class="nu0">12.99</span><span class="sy0">,</span> <span class="br0">&#123;</span>from<span class="sy0">:</span> <span class="st0">&quot;GBP&quot;</span><span class="sy0">,</span> to<span class="sy0">:</span> <span class="st0">&quot;HKD&quot;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">// Chaining sugar:</span>
fx<span class="br0">&#40;</span><span class="nu0">1000</span><span class="br0">&#41;</span>.<span class="me1">from</span><span class="br0">&#40;</span><span class="st0">&quot;USD&quot;</span><span class="br0">&#41;</span>.<span class="me1">to</span><span class="br0">&#40;</span><span class="st0">&quot;GBP&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
fx<span class="br0">&#40;</span><span class="nu0">1000</span><span class="br0">&#41;</span>.<span class="me1">to</span><span class="br0">&#40;</span><span class="st0">&quot;AED&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">// With simple settings and defaults, making this possible:</span>
fx.<span class="me1">convert</span><span class="br0">&#40;</span><span class="nu0">5318008</span><span class="br0">&#41;</span><span class="sy0">;</span>
fx<span class="br0">&#40;</span><span class="nu0">5318008</span><span class="br0">&#41;</span>.<span class="me1">to</span><span class="br0">&#40;</span><span class="st0">&quot;AED&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h2>Weiterführende Links</h2>
<ul>
<li><a href="http://josscrowcroft.github.com/money.js/">Offizielle Website</a></li>
<li><a href="http://josscrowcroft.github.com/money.js/#playground">Demo Playground</a></li>
<li><a href="http://josscrowcroft.github.com/money.js/#documentation">Dokumentation</a></li>
<li><a href="https://github.com/josscrowcroft/money.js/">GitHub Repository</a></li>
<li><a href="http://josscrowcroft.github.com/open-exchange-rates/">Open Source Exchange Rates API</a></li>
</ul>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/javascript/" title="Alle Artikel in JavaScript ansehen">JavaScript</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/bibliothek/" rel="tag">Bibliothek</a>, <a href="http://pehbehbeh.de/tag/money-js/" rel="tag">money.js</a>, <a href="http://pehbehbeh.de/tag/open-source-exchange-rates-api/" rel="tag">Open Source Exchange Rates API</a>, <a href="http://pehbehbeh.de/tag/waehrungsumrechnung/" rel="tag">Währungsumrechnung</a>, <a href="http://pehbehbeh.de/tag/wechselkurs/" rel="tag">Wechselkurs</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/javascript/waehrungsumrechnung-wechselkurs/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/javascript/waehrungsumrechnung-wechselkurs/#comments">3 Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=1993&amp;md5=eee7ab6bdd9b3f28cff707d8854be5b0" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/javascript/waehrungsumrechnung-wechselkurs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=1993&amp;md5=eee7ab6bdd9b3f28cff707d8854be5b0" type="text/html" />
	</item>
		<item>
		<title>Tutorial: Websockets mit JavaScript und PHP &#8211; Teil 2: Linktipps</title>
		<link>http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-mit-javascript-und-php-teil-2-linktipps/</link>
		<comments>http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-mit-javascript-und-php-teil-2-linktipps/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 14:29:00 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Comet Daily]]></category>
		<category><![CDATA[David Walsh]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 3.7]]></category>
		<category><![CDATA[Firefox 4.0]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Kompatibilität]]></category>
		<category><![CDATA[Linktipps]]></category>
		<category><![CDATA[Nettuts+]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Serie]]></category>
		<category><![CDATA[Sicherheitslücke]]></category>
		<category><![CDATA[Socket.IO]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Version]]></category>
		<category><![CDATA[WebSocket API]]></category>
		<category><![CDATA[Websocket.org]]></category>
		<category><![CDATA[WebSockets]]></category>
		<category><![CDATA[Wikipedia]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=1460</guid>
		<description><![CDATA[<img width="64" height="64" src="http://pehbehbeh.de/wp-content/uploads/2011/03/socket.png" class="attachment-post-thumbnail wp-post-image" alt="Socket" title="Socket" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" />Lang ist&#8217;s her: Im April letzten Jahres schrieb ich den ersten Artikel zur Serie WebSockets mit JavaScript und PHP. Da ich es verpennt habe, die Serie fortzusetzen und es mittlerweile ein paar sehr gute Tutorials da draußen gibt, möchte ich &#8230; <a href="http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-mit-javascript-und-php-teil-2-linktipps/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<img width="64" height="64" src="http://pehbehbeh.de/wp-content/uploads/2011/03/socket.png" class="attachment-post-thumbnail wp-post-image" alt="Socket" title="Socket" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" /><p>Lang ist&#8217;s her: Im April letzten Jahres schrieb ich den <a title="Tutorial: WebSockets mit JavaScript und PHP – Teil 1: Grundlagen und das Interface" href="http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-grundlagen-interface/">ersten Artikel</a> zur <a href="http://pehbehbeh.de/series/websockets/">Serie WebSockets mit JavaScript und PHP</a>. Da ich es verpennt habe, die Serie fortzusetzen und es mittlerweile ein paar sehr gute Tutorials da draußen gibt, möchte ich die Reihe mit diesem Artikel und ein paar WebSocket-Linktipps abschließen.</p>
<p><hr style="clear: both;" /></p>
<h2>Entwicklung</h2>
<p>„Damals” steckte das Thema noch in den Kinderschuhen &#8211; doch mittlerweile sind WebSockets neben Chrome auch in den neuesten Versionen von Safari implementiert. Für den Firefox war zwar die Version 3.7 angepeilt &#8211; doch wegen einer Sicherheitslücke im Protokolldesign, werden es die WebSockets nicht einmal in die finale Version von Firefox 4.0 schaffen. (<a href="http://www.heise.de/security/meldung/WebSockets-in-Firefox-4-wegen-Luecke-im-Protokolldesign-deaktiviert-Update-1150157.html">Quelle</a>) In Opera sind sie deshalb seit Version 11 standardmäßig deaktiviert und lassen sich nur über einen Eintrag in der Config wieder aktivieren. (<a href="http://dev.opera.com/articles/view/introducing-web-sockets/">Quelle</a>)</p>
<h2>Linktipps</h2>
<p><strong>Wikipedia: <a href="https://secure.wikimedia.org/wikipedia/en/wiki/WebSockets">Websockets</a></strong></p>
<ul>
<li>allgemeiner Überblick</li>
</ul>
<p><strong><a href="http://websocket.org/">Websocket.org</a></strong></p>
<ul>
<li>kurze Zusammenfassung</li>
<li>Beispiele mit Testserver</li>
<li>genauere Betrachtung &amp; Vorteile von WebSockets</li>
</ul>
<p><strong>Comet Daily: <a href="http://cometdaily.com/2010/11/04/state-of-websocket-support/">State of Websocket Support</a></strong></p>
<ul>
<li>Welche Browser unterstützen WebSockets?</li>
</ul>
<p><strong>Nettuts+: <a href="http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/">Start Using HTML5 WebSockets Today</a></strong></p>
<ul>
<li>Was sind WebSockets?</li>
<li>Was ersetzen WebSockets?</li>
<li>Implementierung von Websockets<br />
(Server, URLs &amp; Ports, Client, Events, etc&#8230;)</li>
</ul>
<p><strong>David Walsh: <a href="http://davidwalsh.name/websocket">WebSocket und Socket.IO</a></strong></p>
<ul>
<li>Was ist die WebSocket API?</li>
<li>Verwendung der WebSocket API</li>
<li>WebSockets mit Socket.IO</li>
<li>dojox.Socket und Socket.IO</li>
</ul>
<p><em>Solltet ihr noch weitere gute Linktipps haben, schreibt sie einfach in die Kommentare. Ich werde die Liste dann ergänzen.</em></p>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/javascript/" title="Alle Artikel in JavaScript ansehen">JavaScript</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/api/" rel="tag">API</a>, <a href="http://pehbehbeh.de/tag/artikel/" rel="tag">Artikel</a>, <a href="http://pehbehbeh.de/tag/browser/" rel="tag">Browser</a>, <a href="http://pehbehbeh.de/tag/comet-daily/" rel="tag">Comet Daily</a>, <a href="http://pehbehbeh.de/tag/david-walsh/" rel="tag">David Walsh</a>, <a href="http://pehbehbeh.de/tag/entwicklung/" rel="tag">Entwicklung</a>, <a href="http://pehbehbeh.de/tag/firefox/" rel="tag">Firefox</a>, <a href="http://pehbehbeh.de/tag/firefox-3-7/" rel="tag">Firefox 3.7</a>, <a href="http://pehbehbeh.de/tag/firefox-4-0/" rel="tag">Firefox 4.0</a>, <a href="http://pehbehbeh.de/tag/google-chrome/" rel="tag">Google Chrome</a>, <a href="http://pehbehbeh.de/tag/javascript/" rel="tag">JavaScript</a>, <a href="http://pehbehbeh.de/tag/kompatibilitaet/" rel="tag">Kompatibilität</a>, <a href="http://pehbehbeh.de/tag/linktipps/" rel="tag">Linktipps</a>, <a href="http://pehbehbeh.de/tag/nettuts/" rel="tag">Nettuts+</a>, <a href="http://pehbehbeh.de/tag/opera/" rel="tag">Opera</a>, <a href="http://pehbehbeh.de/tag/php/" rel="tag">PHP</a>, <a href="http://pehbehbeh.de/tag/protokoll/" rel="tag">Protokoll</a>, <a href="http://pehbehbeh.de/tag/safari/" rel="tag">Safari</a>, <a href="http://pehbehbeh.de/tag/serie/" rel="tag">Serie</a>, <a href="http://pehbehbeh.de/tag/sicherheitsluecke/" rel="tag">Sicherheitslücke</a>, <a href="http://pehbehbeh.de/tag/socket-io/" rel="tag">Socket.IO</a>, <a href="http://pehbehbeh.de/tag/tutorial/" rel="tag">Tutorial</a>, <a href="http://pehbehbeh.de/tag/version/" rel="tag">Version</a>, <a href="http://pehbehbeh.de/tag/websocket-api/" rel="tag">WebSocket API</a>, <a href="http://pehbehbeh.de/tag/websocket-org/" rel="tag">Websocket.org</a>, <a href="http://pehbehbeh.de/tag/websockets/" rel="tag">WebSockets</a>, <a href="http://pehbehbeh.de/tag/wikipedia/" rel="tag">Wikipedia</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-mit-javascript-und-php-teil-2-linktipps/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-mit-javascript-und-php-teil-2-linktipps/#comments">ein Kommentar</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=1460&amp;md5=f684f698884bf1aecf0e8a899e36a3d3" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-mit-javascript-und-php-teil-2-linktipps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=1460&amp;md5=f684f698884bf1aecf0e8a899e36a3d3" type="text/html" />
	</item>
		<item>
		<title>Pixelgenaue Objekterkennung mit HTML5 Canvas als Hilfsmittel</title>
		<link>http://pehbehbeh.de/webentwicklung/javascript/objekterkennung-html5-canvas/</link>
		<comments>http://pehbehbeh.de/webentwicklung/javascript/objekterkennung-html5-canvas/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 13:54:04 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Alpha-Wert]]></category>
		<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Clickmap]]></category>
		<category><![CDATA[CSS-Klasse]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Cursor]]></category>
		<category><![CDATA[Deckkraft]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Demonstration]]></category>
		<category><![CDATA[Div]]></category>
		<category><![CDATA[Effekt]]></category>
		<category><![CDATA[Element]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Funktion]]></category>
		<category><![CDATA[Game Engine]]></category>
		<category><![CDATA[Grafik]]></category>
		<category><![CDATA[Hilfsmittel]]></category>
		<category><![CDATA[Hover]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Image Map]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mouseenter]]></category>
		<category><![CDATA[mouseleave]]></category>
		<category><![CDATA[mousemove]]></category>
		<category><![CDATA[Offset]]></category>
		<category><![CDATA[Pixel]]></category>
		<category><![CDATA[Seitenabstand]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Transparenz]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=1051</guid>
		<description><![CDATA[<img width="48" height="48" src="http://pehbehbeh.de/wp-content/uploads/2010/08/cursor-object.png" class="attachment-post-thumbnail wp-post-image" alt="Mauszeiger auf Objekt" title="Mauszeiger auf Objekt" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" />Wenn wir uns im Netz bewegen bestehen alle Websites irgendwie aus Kästen. Alles ist in irgendeiner Art und Weise irgendwie rechteckig. Zwar geben uns neue CSS3-Techniken die Möglichkeit unsere Elemente abzurunden, aber dennoch: Sie sind Kästen. Wen man eine schöne &#8230; <a href="http://pehbehbeh.de/webentwicklung/javascript/objekterkennung-html5-canvas/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<img width="48" height="48" src="http://pehbehbeh.de/wp-content/uploads/2010/08/cursor-object.png" class="attachment-post-thumbnail wp-post-image" alt="Mauszeiger auf Objekt" title="Mauszeiger auf Objekt" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" /><p>Wenn wir uns im Netz bewegen bestehen alle Websites irgendwie aus Kästen. Alles ist in irgendeiner Art und Weise irgendwie rechteckig. Zwar geben uns neue CSS3-Techniken die Möglichkeit unsere Elemente abzurunden, aber dennoch: Sie sind Kästen. Wen man eine schöne (nicht rechteckige) Grafik anklickbar machen möchte &#8211; und zwar nicht den gesamten Kasten, in dem sie sich befindet, muss man zum Beispiel auf arbeitsintensive Image Maps oder Flash zurückgreifen.</p>
<p>In diesem Artikel möchte ich euch zeigen, dass es mit Hilfe des Canvas-Elements aus HTML5 auch anders funktioniert. Das Element wird dabei <span style="text-decoration: underline;">nur als Hilfsmittel</span> genutzt und nicht dazu, die Grafik einzubinden.</p>
<p><hr style="clear: both;" /></p>
<h2>Die Idee</h2>
<p>Die Idee stammt zugegebenermaßen nicht von mir selbst &#8211; die Umsetzung in diesem Artikel jedoch schon. Ich schaute letztens eine interessantes Video über die <a href="http://www.youtube.com/watch?v=_RRnyChxijA">Erstellung einer Game Engine in JavaScript</a>. Im Video wurde darüber gesprochen Canvas als ein Tool zu benutzen um Pixeldaten aus einem Bild auszulesen &#8211; genauer gesagt aus einer PNG-Datei, die Transparenz beinhaltet.</p>
<p>So lässt sich ein zweidimensionales Array aus Nullen und Einsen erstellen, mit Hilfe dessen man leicht entscheiden kann, ob die Maus sich auf oder neben dem Objekt befindet. Dabei ist man noch nicht einmal beschränkt auf Klick-Events. Nette Hover-Effekte lassen sich genauso gut erstellen.</p>
<h2>Demonstration</h2>
<p>Obwohl es in  allen modernen Browsern funktionieren sollte, habe ich die Demo kurz  im Firefox abgefilmt, sodass auch wirklich jeder in den Genuss kommen kann. Im Video ist ein Hover-Effekt zu sehen, der die Deckkraft der Bilder verändert.</p>
<p><a href="http://dev.pehbehbeh.de/objectRecognition/"><strong>Link zur Live-Demo »</strong></a></p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/Qaj0eIeVZ3g?fs=1&amp;hl=de_DE"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Qaj0eIeVZ3g?fs=1&amp;hl=de_DE" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<h2>Setup</h2>
<h3>HTML</h3>
<p>Wie ich anfangs bereits erwähnte, können Bilder ganz normal in die Seite eingebunden werden, wie man es gewohnt ist. In meinem Beispiel habe ich Divs erstellt, die ein Hintergund-Bild besitzen.
<div class="pms">
<table class="html4strict">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;main&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;container&quot;</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable arrow&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable build&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable building&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable folder&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">hr</span> <span class="sy0">/</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable home&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable interact&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable paint&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable pathing&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">hr</span> <span class="sy0">/</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable pen&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable people&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable phonebook&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable plus&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">hr</span> <span class="sy0">/</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable printer&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable school&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable vault&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">div</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;clickable world&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">hr</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">div</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h3>CSS</h3>
<p>Die CSS-Regeln sind ebenfalls überschaubar. Die Deckkraft wird bei allen Bildern etwas verringert. Im Internet Explorer funktioniert der Effekt eh nicht, deswegen müssen wir uns auch auch nur um die Deckkraft bei den anderen Browsern kümmern.
<div class="pms">
<table class="css">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre>
</td>
<td class="de1">
<pre class="de1">hr <span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">clear</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.clickable</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">128px</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">128px</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">30px</span><span class="sy0">;</span>
&nbsp; &nbsp; -moz-opacity<span class="sy0">:</span> <span class="nu0">0.5</span><span class="sy0">;</span>
&nbsp; &nbsp; opacity<span class="sy0">:</span> <span class="nu0">0.5</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.hover</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; -khtml-opacity<span class="sy0">:</span> <span class="nu0">1.0</span><span class="sy0">;</span>
&nbsp; &nbsp; -moz-opacity<span class="sy0">:</span> <span class="nu0">1.0</span><span class="sy0">;</span>
&nbsp; &nbsp; opacity<span class="sy0">:</span> <span class="nu0">1.0</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.arrow</span> &nbsp; &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/arrow.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span>
<span class="re1">.build</span> &nbsp; &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/build.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span>
<span class="re1">.building</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/building.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; <span class="br0">&#125;</span>
<span class="re1">.folder</span> &nbsp; <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/folder.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
<span class="re1">.home</span> &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/home.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span>
<span class="re1">.interact</span> &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/interact.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<span class="br0">&#125;</span>
<span class="re1">.paint</span> &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/paint.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; <span class="br0">&#125;</span>
<span class="re1">.pathing</span> &nbsp; <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/pathing.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; <span class="br0">&#125;</span>
&nbsp;
<span class="re1">.pen</span> &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/pen.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
<span class="re1">.people</span> &nbsp; &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/people.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp;<span class="br0">&#125;</span>
<span class="re1">.phonebook</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/phonebook.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="br0">&#125;</span>
<span class="re1">.plus</span> &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/plus.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.printer</span> &nbsp; <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/printer.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; <span class="br0">&#125;</span>
<span class="re1">.school</span> &nbsp; &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/school.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp;<span class="br0">&#125;</span>
<span class="re1">.vault</span> &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/vault.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; <span class="br0">&#125;</span>
<span class="re1">.world</span> &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../img/world.png'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; <span class="br0">&#125;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h3>JavaScript</h3>
<p>Ich folgenden JavaScript-Teil werde ich jQuery-Funktionen nutzen, die mir das Leben hier und da etwas einfacher machen. Die Funktionen sind aber keinesfalls für die Umsetzung notwendig.</p>
<p>Insgesamt ist der oben gezeigt Hover-Effekt in drei Teile aufgeteilt:</p>
<ol>
<li>Die Maus betritt den Div <em>(mouseenter)</em></li>
<li>Die Maus bewegt sich im Div <em>(mousemove)</em></li>
<li>Die Maus verlässt den Div<em> (mouseleave)<br />
</em></li>
</ol>
<p>Natürlich muss jeder selbst wissen, wie man es letzendlich implementiert. Ich möchte lediglich die Grundidee mit diesem Beispiel veranschaulichen.</p>
<h4>1. Event: mouseenter</h4>
<p>Wenn die Maus den Div betritt, muss das Array erzeugt werden, das die Bild-Daten enthält. Dazu wird ein Canvas-Element erstellt, in dem das Hintergrundbild des Divs gezeichnet wird. Danach können die Pixel ausgelesen werden. Anhand des Alpha-Wertes (jeder vierte Wert) wird die Transparenz abgefragt und eine Clickmap erzeugt (0=nichts, 1=Objekt).</p>
<p>Zum Schluss wird die Clickmap gespeichert, damit wir sie im nächsten Schritt abfragen können.</p>
<p>Mit den jQuery-Funktionen ist alles recht simpel und schick gelöst. Nur mit der Abfrage des Hintergrundbildes bin ich noch nicht ganz zufrieden. Genaueres dazu hatte ich bereits letztens in <a href="http://pehbehbeh.de/webentwicklung/javascript/url-hintergrundbild/">einem anderen Artikel</a> geäußert.
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre>
</td>
<td class="de1">
<pre class="de1">$<span class="br0">&#40;</span><span class="st0">'.clickable'</span><span class="br0">&#41;</span>.<span class="me1">mouseenter</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw2">var</span> obj <span class="sy0">=</span> $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw2">var</span> canvas <span class="sy0">=</span> document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">'canvas'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw2">var</span> context <span class="sy0">=</span> canvas.<span class="me1">getContext</span><span class="br0">&#40;</span><span class="st0">'2d'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw2">var</span> img <span class="sy0">=</span> <span class="kw2">new</span> Image<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; img.<span class="kw3">onload</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Bild nachzeichnen &amp; ImageData auslesen</span>
&nbsp; &nbsp; &nbsp; &nbsp; canvas.<span class="me1">width</span> &nbsp;<span class="sy0">=</span> img.<span class="me1">width</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; canvas.<span class="me1">height</span> <span class="sy0">=</span> img.<span class="me1">height</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; context.<span class="me1">drawImage</span><span class="br0">&#40;</span>img<span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> imageData <span class="sy0">=</span> context.<span class="me1">getImageData</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> img.<span class="me1">width</span><span class="sy0">,</span> img.<span class="me1">height</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Clickmap erstellen</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> clickMap <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">,</span> n<span class="sy0">=</span>imageData.<span class="me1">data</span>.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">&lt;</span>n<span class="sy0">;</span> i<span class="sy0">+=</span><span class="nu0">4</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> row <span class="sy0">=</span> Math.<span class="me1">floor</span><span class="br0">&#40;</span><span class="br0">&#40;</span>i<span class="sy0">/</span><span class="nu0">4</span><span class="br0">&#41;</span><span class="sy0">/</span>img.<span class="me1">width</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> col <span class="sy0">=</span> <span class="br0">&#40;</span>i<span class="sy0">/</span><span class="nu0">4</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="br0">&#40;</span>row <span class="sy0">*</span> img.<span class="me1">width</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>clickMap<span class="br0">&#91;</span>row<span class="br0">&#93;</span><span class="br0">&#41;</span> clickMap<span class="br0">&#91;</span>row<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clickMap<span class="br0">&#91;</span>row<span class="br0">&#93;</span><span class="br0">&#91;</span>col<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span>imageData.<span class="me1">data</span><span class="br0">&#91;</span>i<span class="sy0">+</span><span class="nu0">3</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="sy0">?</span> <span class="nu0">0</span> <span class="sy0">:</span> <span class="nu0">1</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Clickmap speichern</span>
&nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">'clickMap'</span><span class="sy0">,</span> clickMap<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">// Bild-Quelle angeben und onload-Event auslösen</span>
&nbsp; &nbsp; img.<span class="me1">src</span> <span class="sy0">=</span> obj.<span class="me1">css</span><span class="br0">&#40;</span><span class="st0">'backgroundImage'</span><span class="br0">&#41;</span>.<span class="me1">replace</span><span class="br0">&#40;</span><span class="co2">/\&quot;/g</span><span class="sy0">,</span> <span class="st0">''</span><span class="br0">&#41;</span>.<span class="me1">slice</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> <span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h4>2. Event: mousemove</h4>
<p>Wenn wir die Maus über dem Div bewegen wird abgefragt ob wir uns auf einem sichtbaren Pixel befinden. Wenn dies der Fall ist, wird dem Div eine CSS-Klasse hinzugefügt bzw. wieder entfernt, wenn der Cursor sich auf einem transparenten Pixel befindet. In diesem Beispiel ändert die CSS-Klasse die Deckkraft.</p>
<p>Bei der Berechnung der Cursor-Position werden Seitenabstand und Scrollweite berücksichtigt. Die Offset-Werte müssen gerundet werden, da es im Firefox zu Dezimalwerten kommen kann.
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre>
</td>
<td class="de1">
<pre class="de1">$<span class="br0">&#40;</span><span class="st0">'.clickable'</span><span class="br0">&#41;</span>.<span class="me1">mousemove</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw2">var</span> obj <span class="sy0">=</span> $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="st0">&quot;undefined&quot;</span> <span class="sy0">===</span> <span class="kw1">typeof</span><span class="br0">&#40;</span>obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">'clickMap'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw2">var</span> offset <span class="sy0">=</span> obj.<span class="me1">offset</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw2">var</span> xPos <span class="sy0">=</span> e.<span class="me1">clientX</span> <span class="sy0">-</span> Math.<span class="me1">round</span><span class="br0">&#40;</span>offset.<span class="me1">left</span><span class="br0">&#41;</span> <span class="sy0">+</span> $<span class="br0">&#40;</span>window<span class="br0">&#41;</span>.<span class="me1">scrollLeft</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw2">var</span> yPos <span class="sy0">=</span> e.<span class="me1">clientY</span> <span class="sy0">-</span> Math.<span class="me1">round</span><span class="br0">&#40;</span>offset.<span class="me1">top</span><span class="br0">&#41;</span> &nbsp;<span class="sy0">+</span> $<span class="br0">&#40;</span>window<span class="br0">&#41;</span>.<span class="me1">scrollTop</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">'clickMap'</span><span class="br0">&#41;</span><span class="br0">&#91;</span>yPos<span class="br0">&#93;</span><span class="br0">&#91;</span>xPos<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'hover'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hover'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h4>3. Event: mouseleave</h4>
<p>Da der Fall auftreten könnte, das jemand die Maus besonders Schnell aus dem Div zieht oder das Bild am Rande des Divs einen sichtbaren Pixel besitzt sollte die CSS-Klasse auf jeden Fall entfernt werden, sobald man den Div verlässt.
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
</pre>
</td>
<td class="de1">
<pre class="de1">$<span class="br0">&#40;</span><span class="st0">'.clickable'</span><span class="br0">&#41;</span>.<span class="me1">mouseleave</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hover'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h2>Fazit</h2>
<p>Das war&#8217;s. Hat mich zwar einige Zeit gekostet diesen Effekt zu basteln, aber wenn man es jetzt so sieht, steckt nicht wirklich viel dahinter. Ich hoffe, dass ich euch damit weiterhelfen oder zumindest inspirieren konnte. Ich finde es zunmindest erstaunlich, wie neue Web-Technologien uns die Arbeit erleichtern können.</p>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/javascript/" title="Alle Artikel in JavaScript ansehen">JavaScript</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/alpha-wert/" rel="tag">Alpha-Wert</a>, <a href="http://pehbehbeh.de/tag/artikel/" rel="tag">Artikel</a>, <a href="http://pehbehbeh.de/tag/browser/" rel="tag">Browser</a>, <a href="http://pehbehbeh.de/tag/canvas/" rel="tag">Canvas</a>, <a href="http://pehbehbeh.de/tag/clickmap/" rel="tag">Clickmap</a>, <a href="http://pehbehbeh.de/tag/css-klasse/" rel="tag">CSS-Klasse</a>, <a href="http://pehbehbeh.de/tag/css3/" rel="tag">CSS3</a>, <a href="http://pehbehbeh.de/tag/cursor/" rel="tag">Cursor</a>, <a href="http://pehbehbeh.de/tag/deckkraft/" rel="tag">Deckkraft</a>, <a href="http://pehbehbeh.de/tag/demo/" rel="tag">Demo</a>, <a href="http://pehbehbeh.de/tag/demonstration/" rel="tag">Demonstration</a>, <a href="http://pehbehbeh.de/tag/div/" rel="tag">Div</a>, <a href="http://pehbehbeh.de/tag/effekt/" rel="tag">Effekt</a>, <a href="http://pehbehbeh.de/tag/element/" rel="tag">Element</a>, <a href="http://pehbehbeh.de/tag/event/" rel="tag">Event</a>, <a href="http://pehbehbeh.de/tag/firefox/" rel="tag">Firefox</a>, <a href="http://pehbehbeh.de/tag/flash/" rel="tag">Flash</a>, <a href="http://pehbehbeh.de/tag/funktion/" rel="tag">Funktion</a>, <a href="http://pehbehbeh.de/tag/game-engine/" rel="tag">Game Engine</a>, <a href="http://pehbehbeh.de/tag/grafik/" rel="tag">Grafik</a>, <a href="http://pehbehbeh.de/tag/hilfsmittel/" rel="tag">Hilfsmittel</a>, <a href="http://pehbehbeh.de/tag/hover/" rel="tag">Hover</a>, <a href="http://pehbehbeh.de/tag/html5/" rel="tag">HTML5</a>, <a href="http://pehbehbeh.de/tag/ie/" rel="tag">IE</a>, <a href="http://pehbehbeh.de/tag/image-map/" rel="tag">Image Map</a>, <a href="http://pehbehbeh.de/tag/jquery/" rel="tag">jQuery</a>, <a href="http://pehbehbeh.de/tag/mouseenter/" rel="tag">mouseenter</a>, <a href="http://pehbehbeh.de/tag/mouseleave/" rel="tag">mouseleave</a>, <a href="http://pehbehbeh.de/tag/mousemove/" rel="tag">mousemove</a>, <a href="http://pehbehbeh.de/tag/offset/" rel="tag">Offset</a>, <a href="http://pehbehbeh.de/tag/pixel/" rel="tag">Pixel</a>, <a href="http://pehbehbeh.de/tag/seitenabstand/" rel="tag">Seitenabstand</a>, <a href="http://pehbehbeh.de/tag/tool/" rel="tag">Tool</a>, <a href="http://pehbehbeh.de/tag/transparenz/" rel="tag">Transparenz</a>, <a href="http://pehbehbeh.de/tag/video/" rel="tag">Video</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/javascript/objekterkennung-html5-canvas/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/javascript/objekterkennung-html5-canvas/#comments">8 Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=1051&amp;md5=8fefa7f70a9d621fcc1df4caf3d92580" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/javascript/objekterkennung-html5-canvas/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=1051&amp;md5=8fefa7f70a9d621fcc1df4caf3d92580" type="text/html" />
	</item>
		<item>
		<title>JavaScript: URL des Hintergrundbildes auslesen (Problem + Lösung)</title>
		<link>http://pehbehbeh.de/webentwicklung/javascript/url-hintergrundbild/</link>
		<comments>http://pehbehbeh.de/webentwicklung/javascript/url-hintergrundbild/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 19:45:18 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[backgroundImage]]></category>
		<category><![CDATA[Element]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Gecko]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Hintergrundbild]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[Lösung]]></category>
		<category><![CDATA[Problem]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Style]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[Webkit]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=1016</guid>
		<description><![CDATA[<img width="64" height="64" src="http://pehbehbeh.de/wp-content/uploads/2010/08/link-64x64.png" class="attachment-post-thumbnail wp-post-image" alt="Link" title="Link" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" />Heute stand ich mal wieder vor einem kleinen Problem und bin mir bis jetzt nicht sicher, ob ich es optimal gelöst habe. Ich hoffe auf Verbesserungsvorschläge oder Zustimmung von euch. Mein Problem: Die Hintergrundbild-URL eines Divs muss ausgelesen werden&#8230; Das &#8230; <a href="http://pehbehbeh.de/webentwicklung/javascript/url-hintergrundbild/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<img width="64" height="64" src="http://pehbehbeh.de/wp-content/uploads/2010/08/link-64x64.png" class="attachment-post-thumbnail wp-post-image" alt="Link" title="Link" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" /><p>Heute stand ich mal wieder vor einem kleinen Problem und bin mir bis jetzt nicht sicher, ob ich es optimal gelöst habe. Ich hoffe auf Verbesserungsvorschläge oder Zustimmung von euch. Mein Problem: Die Hintergrundbild-URL eines Divs muss ausgelesen werden&#8230;</p>
<p><hr style="clear: both;" /></p>
<h2>Das Problem</h2>
<p>An sich ist es kein Problem auf bestimmte Style-Werte von Elementen zuzugreifen. Wenn man jedoch die URL eines Hintergrundbildes (<a href="http://de.selfhtml.org/javascript/objekte/style.htm"><code>style.backgroundImage</code></a>) abfragt, erhält man &#8211; je nach Browser-Engine &#8211; unterschiedliche Rückgabewerte:</p>
<p><strong>Gecko <em>(z.B. Firefox)</em></strong></p>
<blockquote><p><code>url("http://pfad.de/zum/bild.png")</code></p></blockquote>
<p><strong>Webkit <em>(z.B. Chrome &amp; Safari)</em></strong></p>
<blockquote><p><code>url(http://pfad.de/zum/bild.png)</code></p></blockquote>
<p>Das haben zumindest meine Tests mit den neusten Versionen der jeweiligen Browser ergeben. Bei Chrome und Safari wird die URL nicht in Anführungszeichen gesetzt. Wenn man sich jetzt als Ziel gesetzt hat, <span style="text-decoration: underline;">nur die URL</span> des Hintergrundbildes abzufragen, muss man beide Engines beachten.</p>
<h2>Die Lösung</h2>
<p>Meine Lösung besteht darin, dass ich zunächst die Anführungszeichen aus der Zeichenkette entferne und danach alle Zeichen &#8211; bis auf die ersten Vier sowie das Letzte &#8211; mittels <a href="http://de.selfhtml.org/javascript/objekte/string.htm#slice"><code>slice()</code></a> extrahiere:
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="kw2">var</span> url <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'foo'</span><span class="br0">&#41;</span>.<span class="me1">style</span>.<span class="me1">backgroundImage</span>.<span class="me1">replace</span><span class="br0">&#40;</span><span class="co2">/\&quot;/g</span><span class="sy0">,</span> <span class="st0">''</span><span class="br0">&#41;</span>.<span class="me1">slice</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> <span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p><em>Der Internet Explorer 8 verhält sich in diesem Fall wie der Firefox. Andere Versionen habe ich nicht getestet. <strong>Was haltet ihr von dieser Lösung? Gibt es eine bessere oder einfachere Umsetzung?</strong></em></p>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/javascript/" title="Alle Artikel in JavaScript ansehen">JavaScript</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/backgroundimage/" rel="tag">backgroundImage</a>, <a href="http://pehbehbeh.de/tag/element/" rel="tag">Element</a>, <a href="http://pehbehbeh.de/tag/engine/" rel="tag">Engine</a>, <a href="http://pehbehbeh.de/tag/firefox/" rel="tag">Firefox</a>, <a href="http://pehbehbeh.de/tag/gecko/" rel="tag">Gecko</a>, <a href="http://pehbehbeh.de/tag/google-chrome/" rel="tag">Google Chrome</a>, <a href="http://pehbehbeh.de/tag/hintergrundbild/" rel="tag">Hintergrundbild</a>, <a href="http://pehbehbeh.de/tag/ie8/" rel="tag">IE8</a>, <a href="http://pehbehbeh.de/tag/loesung/" rel="tag">Lösung</a>, <a href="http://pehbehbeh.de/tag/problem/" rel="tag">Problem</a>, <a href="http://pehbehbeh.de/tag/safari/" rel="tag">Safari</a>, <a href="http://pehbehbeh.de/tag/style/" rel="tag">Style</a>, <a href="http://pehbehbeh.de/tag/url/" rel="tag">URL</a>, <a href="http://pehbehbeh.de/tag/webkit/" rel="tag">Webkit</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/javascript/url-hintergrundbild/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/javascript/url-hintergrundbild/#comments">2 Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=1016&amp;md5=024696b1bd3cd9e6fcabc5491ef89680" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/javascript/url-hintergrundbild/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=1016&amp;md5=024696b1bd3cd9e6fcabc5491ef89680" type="text/html" />
	</item>
		<item>
		<title>Counting-Problem bei automatischen Social-Buttons verhindern</title>
		<link>http://pehbehbeh.de/webentwicklung/javascript/counting-problem-social-buttons-verhindern/</link>
		<comments>http://pehbehbeh.de/webentwicklung/javascript/counting-problem-social-buttons-verhindern/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 11:38:04 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Button]]></category>
		<category><![CDATA[Code-Schnipsel]]></category>
		<category><![CDATA[Digg]]></category>
		<category><![CDATA[Feedburner]]></category>
		<category><![CDATA[get_permalink]]></category>
		<category><![CDATA[Hype]]></category>
		<category><![CDATA[Like]]></category>
		<category><![CDATA[Parameter]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Social News]]></category>
		<category><![CDATA[t3n]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[urlencode]]></category>
		<category><![CDATA[Vote]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=945</guid>
		<description><![CDATA[<img width="64" height="64" src="http://pehbehbeh.de/wp-content/uploads/2010/07/t3n_social_news_buttons-64x64.gif" class="attachment-post-thumbnail wp-post-image" alt="t3n Social News Buttons" title="t3n Social News Buttons" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" />Nach dieser Überschrift sehe ich schon das große Fragezeichen in den Gesichtern der Leser. Dabei ist das Problem, um das ich mich in diesem Artikel kümmern möchte, recht trivial. Auf manchen Websites werden wertvolle Votes, Hypes, Diggs, Likes, oder Wasweißichs &#8230; <a href="http://pehbehbeh.de/webentwicklung/javascript/counting-problem-social-buttons-verhindern/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<img width="64" height="64" src="http://pehbehbeh.de/wp-content/uploads/2010/07/t3n_social_news_buttons-64x64.gif" class="attachment-post-thumbnail wp-post-image" alt="t3n Social News Buttons" title="t3n Social News Buttons" style="float: left; padding: 6px; margin: 0 6px 6px 0; border: 6px solid #eee;" /><p>Nach dieser Überschrift sehe ich schon das große Fragezeichen in den Gesichtern der Leser. Dabei ist das Problem, um das ich mich in diesem Artikel kümmern möchte, recht trivial. Auf manchen Websites werden wertvolle Votes, Hypes, Diggs, Likes, oder Wasweißichs verschenkt, weil der Button falsch eingebaut wird.</p>
<p><hr style="clear: both;" /></p>
<h2>Beispiel: t3n Social News</h2>
<p>Ich möchte die Situation am Beispiel der <a href="http://t3n.de/socialnews/">Social News von t3n</a> verdeutlichen, da es mir selbst so ergangen ist.</p>
<p>Um den <a href="http://t3n.de/socialnews/tools/">t3n Social News Button</a> einzubauen, hat man genau zwei Möglichkeiten:</p>
<h3>1. <span style="text-decoration: underline;">ohne</span> Angabe der URL</h3>
<div class="pms">
<table class="html4strict">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sc2">&lt;<span class="kw2">script</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;http://t3n.de/socialnews/ebutton/&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">script</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h3>2. <span style="text-decoration: underline;">mit</span> Angabe der URL</h3>
<div class="pms">
<table class="html4strict">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sc2">&lt;<span class="kw2">script</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;http://t3n.de/socialnews/ebutton/http%253A%252F%252Fwww.yeebase.com%252Fblog%252F&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">script</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h2>Das Counting-Problem</h2>
<p>Bei Variante 1 wird die URL also automatisch ausgelesen. Das würde bedeuten, dass beispielsweise Besucher von Feedburner für eine andere URL Voten, als Besucher, die direkt auf die &#8220;echte&#8221; URL gegangen sind, da Feedburner ein paar Parameter an die URL hängt:</p>
<blockquote><p>
<strong>http://example.org/</strong></p>
<p>gegen:</p>
<p><strong>http://example.org/</strong><em>?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+XYZBlog+(XYZBlog)&#038;utm_content=Google+Reader</em>
</p></blockquote>
<p>Außerdem werden die Votes, die man bereits für die Orginal-URL bekommen hat, gar nicht erst angezeigt.</p>
<h2>Aufruf: Immer URL übermitteln</h2>
<p>Deshalb meine logische Schlussfolgerung: Man sollte immer, wenn es möglich ist, die gewünschte URL der Seite übermitteln, da man es sonst &#8211; übertrieben gesagt &#8211; dem Zufall überlässt, wo die ersehnten Votes landen.</p>
<h2>t3n Social News Button für WordPress</h2>
<p>Zum Schluss gibt es noch einen kleinen Code-Schnipsel. So könnt ihr den t3n Social News Button in euer WordPress-Theme integrieren:
<div class="pms">
<table class="html4strict">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sc2">&lt;<span class="kw2">script</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;http://t3n.de/socialnews/ebutton/&lt;?php echo urlencode(urlencode(get_permalink())); ?&gt;</span></span>&quot;&gt;<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">script</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Ein Plugin wäre hier mehr als überflüssig.</p>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/javascript/" title="Alle Artikel in JavaScript ansehen">JavaScript</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/button/" rel="tag">Button</a>, <a href="http://pehbehbeh.de/tag/code-schnipsel/" rel="tag">Code-Schnipsel</a>, <a href="http://pehbehbeh.de/tag/digg/" rel="tag">Digg</a>, <a href="http://pehbehbeh.de/tag/feedburner/" rel="tag">Feedburner</a>, <a href="http://pehbehbeh.de/tag/get_permalink/" rel="tag">get_permalink</a>, <a href="http://pehbehbeh.de/tag/hype/" rel="tag">Hype</a>, <a href="http://pehbehbeh.de/tag/like/" rel="tag">Like</a>, <a href="http://pehbehbeh.de/tag/parameter/" rel="tag">Parameter</a>, <a href="http://pehbehbeh.de/tag/plugin/" rel="tag">Plugin</a>, <a href="http://pehbehbeh.de/tag/social-news/" rel="tag">Social News</a>, <a href="http://pehbehbeh.de/tag/t3n/" rel="tag">t3n</a>, <a href="http://pehbehbeh.de/tag/theme/" rel="tag">Theme</a>, <a href="http://pehbehbeh.de/tag/url/" rel="tag">URL</a>, <a href="http://pehbehbeh.de/tag/urlencode/" rel="tag">urlencode</a>, <a href="http://pehbehbeh.de/tag/vote/" rel="tag">Vote</a>, <a href="http://pehbehbeh.de/tag/wordpress/" rel="tag">WordPress</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/javascript/counting-problem-social-buttons-verhindern/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/javascript/counting-problem-social-buttons-verhindern/#comments">keine Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=945&amp;md5=22ca99d78fc9337fc38a3bbe70a8c380" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/javascript/counting-problem-social-buttons-verhindern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=945&amp;md5=22ca99d78fc9337fc38a3bbe70a8c380" type="text/html" />
	</item>
		<item>
		<title>Google Analytics &#8220;legaler&#8221; machen</title>
		<link>http://pehbehbeh.de/webentwicklung/javascript/google-analytics-legaler-machen/</link>
		<comments>http://pehbehbeh.de/webentwicklung/javascript/google-analytics-legaler-machen/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 10:00:24 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[AddOn]]></category>
		<category><![CDATA[anonym]]></category>
		<category><![CDATA[asynchron]]></category>
		<category><![CDATA[Datenschutz]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[IP-Adresse]]></category>
		<category><![CDATA[legal]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=822</guid>
		<description><![CDATA[Google Analytics war in letzter Zeit häufig in den Medien. Immer wieder wurde der Umgang mit personenbezogenen Daten von Datenschützern kritisiert. Jetzt hat Google reagiert und zwei Optionen veröffentlicht, die dem Ärger der letzten Zeit Abhilfe schaffen sollen. 1. Plugin &#8230; <a href="http://pehbehbeh.de/webentwicklung/javascript/google-analytics-legaler-machen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Google Analytics war in letzter Zeit häufig in den Medien. Immer wieder wurde der Umgang mit personenbezogenen Daten von Datenschützern kritisiert. Jetzt hat Google reagiert und zwei Optionen veröffentlicht, die dem Ärger der letzten Zeit Abhilfe schaffen sollen.</p>
<p><hr style="clear: both;" /></p>
<h2>1. Plugin für Besucher</h2>
<p>Zum einen kann ab sofort ein offizielles <a href="http://tools.google.com/dlpage/gaoptout?hl=de">Deaktivierungs-AddOn</a> für alle gängigen Browser (außer Safari) heruntergeladen werden. Es sorgt ganz einfach dafür, dass keine Daten vom Besucher zu Google Analytics gelangen. Damit besteht zwar nicht die Möglichkeit, den Dienst legaler zu machen, trotzdem haben Benutzer jetzt die Chance, Aufzeichnungen ihres Surf-Verhaltens zu blockieren.</p>
<h2>2. Code für Webmaster</h2>
<p>Auf der anderen Seite können Webmaster ihren Google Analytics Code um eine weitere Zeile ergänzen. Ich beschrieb bereits im Januar, wie man <a href="http://pehbehbeh.de/webentwicklung/javascript/google-analytics-asynchron-laden/">Google Analytics asynchron laden</a> kann. Diesen Code verändern wir nun wie folgt:
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sy0">&lt;</span>script<span class="sy0">&gt;</span>
<span class="kw2">var</span> _gaq <span class="sy0">=</span> _gaq <span class="sy0">||</span> <span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">;</span>
_gaq.<span class="me1">push</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="st0">'_setAccount'</span><span class="sy0">,</span> <span class="st0">'UA-XXXXX-X'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
_gaq.<span class="me1">push</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="st0">'anonymizeIp'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
_gaq.<span class="me1">push</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="st0">'_trackPageview'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw2">var</span> ga <span class="sy0">=</span> document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">'script'</span><span class="br0">&#41;</span><span class="sy0">;</span> ga.<span class="me1">type</span> <span class="sy0">=</span> <span class="st0">'text/javascript'</span><span class="sy0">;</span> ga.<span class="me1">async</span> <span class="sy0">=</span> <span class="kw2">true</span><span class="sy0">;</span>
&nbsp; &nbsp; ga.<span class="me1">src</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="st0">'https:'</span> <span class="sy0">==</span> document.<span class="me1">location</span>.<span class="me1">protocol</span> <span class="sy0">?</span> <span class="st0">'https://ssl'</span> <span class="sy0">:</span> <span class="st0">'http://www'</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'.google-analytics.com/ga.js'</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw2">var</span> s <span class="sy0">=</span> document.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">'script'</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span> s.<span class="me1">parentNode</span>.<span class="me1">insertBefore</span><span class="br0">&#40;</span>ga<span class="sy0">,</span> s<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="sy0">&lt;/</span>script<span class="sy0">&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Es wurde eigentlich nur eine Zeile hinzugefügt.
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">4
</pre>
</td>
<td class="de1">
<pre class="de1">_gaq.<span class="me1">push</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="st0">'anonymizeIp'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Sie bewirkt, dass die letzte Achtergruppe der IP-Adresse vernachlässigt wird. Somit werden zwar die geographischen Angaben in den Statistiken etwas ungenauer, sollten jedoch immer noch ausreichend sein, um einen Überblick zu bekommen. Zudem ist man auf der sicheren Seite, was den Datenschutz anbelangt.</p>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/javascript/" title="Alle Artikel in JavaScript ansehen">JavaScript</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/addon/" rel="tag">AddOn</a>, <a href="http://pehbehbeh.de/tag/anonym/" rel="tag">anonym</a>, <a href="http://pehbehbeh.de/tag/asynchron/" rel="tag">asynchron</a>, <a href="http://pehbehbeh.de/tag/datenschutz/" rel="tag">Datenschutz</a>, <a href="http://pehbehbeh.de/tag/google-analytics/" rel="tag">Google Analytics</a>, <a href="http://pehbehbeh.de/tag/ip-adresse/" rel="tag">IP-Adresse</a>, <a href="http://pehbehbeh.de/tag/legal/" rel="tag">legal</a>, <a href="http://pehbehbeh.de/tag/plugin/" rel="tag">Plugin</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/javascript/google-analytics-legaler-machen/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/javascript/google-analytics-legaler-machen/#comments">keine Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=822&amp;md5=4772324df9017ce71148a231e65d975a" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/javascript/google-analytics-legaler-machen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=822&amp;md5=4772324df9017ce71148a231e65d975a" type="text/html" />
	</item>
		<item>
		<title>Tutorial: WebSockets mit JavaScript und PHP &#8211; Teil 1: Grundlagen und das Interface</title>
		<link>http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-grundlagen-interface/</link>
		<comments>http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-grundlagen-interface/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 19:35:39 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTTP-Protokoll]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Kommunikation]]></category>
		<category><![CDATA[Longpolling]]></category>
		<category><![CDATA[Netzwerkprotokoll]]></category>
		<category><![CDATA[Pull-Technologie]]></category>
		<category><![CDATA[Push-Technologie]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[WebSockets]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=766</guid>
		<description><![CDATA[Dies ist der erste Teil einer neuen Artikel-Serie rund um WebSockets. Im ersten Teil möchte ich euch die Grundlagen von WebSockets näher bringen. Die nächsten Teile handeln von der Implementierung mit JavaScript und PHP. Was sind WebSockets? WebSockets ist ein &#8230; <a href="http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-grundlagen-interface/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dies ist der erste Teil einer neuen Artikel-Serie rund um <strong>WebSockets</strong>. Im ersten Teil möchte ich euch die Grundlagen von WebSockets näher bringen. Die nächsten Teile handeln von der Implementierung mit JavaScript und PHP.</p>
<p><hr style="clear: both;" /></p>
<h2>Was sind WebSockets?</h2>
<p><a href="http://de.wikipedia.org/wiki/WebSockets">WebSockets</a> ist ein Netzwerkprotokoll, welches mit HTML5 eingeführt wurde und momentan nur <a href="http://blog.chromium.org/2009/12/web-sockets-now-available-in-google.html">von Google Chrome unterstützt</a> wird. Es dient dazu die Kommunikation zwischen einem Client und dem Server in einem Webbrowser zu optimieren.</p>
<p>Bisher mussten Antworten vom Server immer vom Client gefordert werden (<a href="http://en.wikipedia.org/wiki/Pull_technology">Pull-Technologie</a>). Mit WebSockets ist es nun Möglich eine bidirektionale Verbindung zwischen Client und Server herzustellen, sodass der Server jederzeit Nachrichten an den Client senden kann (<a href="http://en.wikipedia.org/wiki/Push_technology">Push-Technologie</a>).</p>
<p>Es gibt zwar schon zahlreiche Möglichkeiten die Funktionalität eines WebSockets nachzuahmen (Bsp.: <a href="http://en.wikipedia.org/wiki/Comet_(programming)#Ajax_with_long_polling">AJAX-Longpolling</a>), jedoch bringen diese Hacks immer einen gewissen Overhead durch das HTTP-Protokoll mit sich. WebSockets besitzen diesen Nachteil nicht.</p>
<h2>Das WebSocket-Interface</h2>
<p>Werfen wir einen Blick auf das <a href="http://dev.w3.org/html5/websockets/#the-websocket-interface">WebSocket-Interface</a>:
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="br0">&#91;</span>Constructor<span class="br0">&#40;</span><span class="kw1">in</span> DOMString url<span class="sy0">,</span> <span class="kw1">in</span> optional DOMString protocol<span class="br0">&#41;</span><span class="br0">&#93;</span>
interface WebSocket <span class="br0">&#123;</span>
&nbsp; &nbsp; readonly attribute DOMString URL<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">// ready state</span>
&nbsp; &nbsp; <span class="kw2">const</span> unsigned short CONNECTING <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw2">const</span> unsigned short <span class="kw3">OPEN</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw2">const</span> unsigned short CLOSING <span class="sy0">=</span> <span class="nu0">2</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw2">const</span> unsigned short CLOSED <span class="sy0">=</span> <span class="nu0">3</span><span class="sy0">;</span>
&nbsp; &nbsp; readonly attribute unsigned short readyState<span class="sy0">;</span>
&nbsp; &nbsp; readonly attribute unsigned long bufferedAmount<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">// networking</span>
&nbsp; &nbsp; attribute <span class="kw2">Function</span> onopen<span class="sy0">;</span>
&nbsp; &nbsp; attribute <span class="kw2">Function</span> onmessage<span class="sy0">;</span>
&nbsp; &nbsp; attribute <span class="kw2">Function</span> <span class="kw3">onerror</span><span class="sy0">;</span>
&nbsp; &nbsp; attribute <span class="kw2">Function</span> onclose<span class="sy0">;</span>
&nbsp; &nbsp; boolean send<span class="br0">&#40;</span><span class="kw1">in</span> DOMString data<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">void</span> <span class="kw3">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">;</span>
WebSocket implements EventTarget<span class="sy0">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h3>Eigenschaften</h3>
<ul>
<li><code><strong>readyState</strong></code> &#8211; Status der Verbindung <small>(0=connecting, 1=open, 2=closing, 3=closed)</small></li>
<li><code><strong>bufferedAmount</strong></code> &#8211; <em>Bytes, die in der Warteschlange stehen</em></li>
</ul>
<h3>Methoden</h3>
<ul>
<li><code><strong>send</strong></code> &#8211; eine Nachricht an den Server senden</li>
<li><code><strong>close</strong></code> &#8211; die Verbindung schließen</li>
</ul>
<p><strong>Event-Handler:</strong></p>
<ul>
<li><code><strong>onopen</strong></code> &#8211; bei Öffnen der Verbindung</li>
<li><code><strong>onmessage</strong></code> &#8211; bei Empfangen einer Nachricht</li>
<li><code><strong>onerror</strong></code> &#8211; bei Auftreten eines Fehlers</li>
<li><code><strong>onclose</strong></code> &#8211; bei Schließen der Verbindung</li>
</ul>
<h2>Ausblick</h2>
<p>Mit dem Wissen über dieses Interface seid ihr bestens gerüstet für die nächsten Teile dieser Artikel-Serie, in denen wir eine vollständige Implementierung von WebSockets mit JavaScript und PHP erarbeiten und diese auf eine funktionsfähige Chat-Anwendung erweitern.</p>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/javascript/" title="Alle Artikel in JavaScript ansehen">JavaScript</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/ajax/" rel="tag">AJAX</a>, <a href="http://pehbehbeh.de/tag/client/" rel="tag">Client</a>, <a href="http://pehbehbeh.de/tag/google-chrome/" rel="tag">Google Chrome</a>, <a href="http://pehbehbeh.de/tag/grundlagen/" rel="tag">Grundlagen</a>, <a href="http://pehbehbeh.de/tag/html5/" rel="tag">HTML5</a>, <a href="http://pehbehbeh.de/tag/http-protokoll/" rel="tag">HTTP-Protokoll</a>, <a href="http://pehbehbeh.de/tag/interface/" rel="tag">Interface</a>, <a href="http://pehbehbeh.de/tag/kommunikation/" rel="tag">Kommunikation</a>, <a href="http://pehbehbeh.de/tag/longpolling/" rel="tag">Longpolling</a>, <a href="http://pehbehbeh.de/tag/netzwerkprotokoll/" rel="tag">Netzwerkprotokoll</a>, <a href="http://pehbehbeh.de/tag/pull-technologie/" rel="tag">Pull-Technologie</a>, <a href="http://pehbehbeh.de/tag/push-technologie/" rel="tag">Push-Technologie</a>, <a href="http://pehbehbeh.de/tag/server/" rel="tag">Server</a>, <a href="http://pehbehbeh.de/tag/websockets/" rel="tag">WebSockets</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-grundlagen-interface/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-grundlagen-interface/#comments">12 Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=766&amp;md5=c559917cc61d73eb85f43ce3133b0877" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-grundlagen-interface/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=766&amp;md5=c559917cc61d73eb85f43ce3133b0877" type="text/html" />
	</item>
		<item>
		<title>Bilder mit JavaScript asynchron laden, um lange Ladezeiten zu verhindern</title>
		<link>http://pehbehbeh.de/webentwicklung/html-css/bilder-javascript-asynchron-laden/</link>
		<comments>http://pehbehbeh.de/webentwicklung/html-css/bilder-javascript-asynchron-laden/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 11:58:43 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=737</guid>
		<description><![CDATA[Manchmal nimmt das Laden einer Seite kein Ende. Der Ladebalken will einfach nicht die 100% erreichen. Woran liegt&#8217;s? &#8211; Meistens an externen Services, wie Google Analytics oder Verzeichnissen wie Bloggerei und Blogoscoop, die ein Bild (Publicon) einbinden, dass gerade nicht &#8230; <a href="http://pehbehbeh.de/webentwicklung/html-css/bilder-javascript-asynchron-laden/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Manchmal nimmt das Laden einer Seite kein Ende. Der Ladebalken will einfach nicht die 100% erreichen. Woran liegt&#8217;s? &#8211; Meistens an externen Services, wie <a href="http://www.google.com/intl/de/analytics/">Google Analytics</a> oder Verzeichnissen wie <a href="http://www.bloggerei.de/blog/14659/pehbehbeh">Bloggerei</a> und <a href="http://www.blogoscoop.net/blog/8878">Blogoscoop</a>, die ein Bild (Publicon) einbinden, dass gerade nicht verfügbar ist oder ewig lange braucht, bis es geladen ist. Doch wie kann man diese Angelegenheit umgehen?</p>
<p>Google hat das Problem bereits erkannt und bietet seit einiger Zeit die Möglichkeit, <a href="http://pehbehbeh.de/webentwicklung/javascript/google-analytics-asynchron-laden/">Google Analytics asynchron zu laden</a>.</p>
<p>Mit Bloggerei &amp; Co hat man es nicht so leicht. Ich habe Einiges ausprobiert, bin jedoch nicht zu einem überzeugenden Ergebnis gekommen. Doch fangen wir von vorne an:</p>
<p><hr style="clear: both;" /></p>
<h2>Möglichkeit 1: Nachträglich einfügen</h2>
<p>Die einfachste Variante wäre, das Bild (oder den Code des Anbieters) gar nicht im HTML-Dokument zu platzieren, sondern erst nachträglich mit JavaScript einzufügen. Der Ladebalken des Browsers wäre verschwunden bevor das Bild überhaupt beginnt zu laden.</p>
<p>Jedoch funktioniert das schon mal nicht mit Bloggerei. Denn dort schaut regelmäßig ein Bot vorbei, der überprüft ob der Code richtig eingebunden ist. Beim Bot wird kein JavaScript ausgeführt, sodass dieser keinen Code zu Gesicht bekommt. Bringt also nichts&#8230;</p>
<h2>Möglichkeit 2: Verstecken &amp; nachträglich anzeigen</h2>
<p>Für den zweiten Versuch habe ich mir eine kleine &#8220;Testumgebung&#8221; geschaffen. Zunächst benötigte ich ein Bild, das immer eine gewisse Zeit benötigt um geladen zu werden. Das habe ich ganz einfach in PHP mit einem Timeout gelöst (<code>img.php</code>):
<div class="pms">
<table class="php">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="kw2">&lt;?php</span>
<span class="kw3">sleep</span><span class="br0">&#40;</span><span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="re0">$file</span> <span class="sy0">=</span> <span class="st_h">'img.jpg'</span><span class="sy0">;</span>
<span class="re0">$image</span> <span class="sy0">=</span> <span class="kw3">imagecreatefromjpeg</span><span class="br0">&#40;</span><span class="re0">$file</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/jpeg&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw3">imagejpeg</span><span class="br0">&#40;</span><span class="re0">$image</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw3">imagedestroy</span><span class="br0">&#40;</span><span class="re0">$image</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Dieses Bild wird nun in einer HTML-Datei eingebunden:
<div class="pms">
<table class="html4strict">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sc2">&lt;<span class="kw2">html</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">head</span>&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">title</span>&gt;</span>Speedtest #1<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">title</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">head</span>&gt;</span>
&nbsp;
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">body</span>&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">img</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;Speedtest&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;img/img.php&quot;</span> <span class="sy0">/</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">html</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Würden wir die HTML-Datei jetzt aufrufen, würde es etwa drei Sekunden dauern bis der Ladebalken im Browser verschwindet. Deshalb war meine Idee, das Bild mittels CSS zu verstecken, damit der Browser es nicht beim Rendern der Seite lädt. Danach (wenn der Ladebalken verschwunden ist) kann man es schließlich mit JavaScript ganz einfach wieder sichtbar machen.</p>
<p>Die HTML-Datei habe ich also wie folgt geändert:
<div class="pms">
<table class="html4strict">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sc2">&lt;<span class="kw2">html</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">head</span>&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">title</span>&gt;</span>Speedtest #2<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">title</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">head</span>&gt;</span>
&nbsp;
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">body</span> <span class="kw3">onload</span><span class="sy0">=</span><span class="st0">&quot;document.getElementsByTagName('img')[0].style.display = 'inline';&quot;</span>&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">img</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;Speedtest&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;img/img.php&quot;</span> <span class="kw3">style</span><span class="sy0">=</span><span class="st0">&quot;display:none;&quot;</span> <span class="sy0">/</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">html</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Diese Lösung wäre zu schön gewesen. Leider wird das Bild trotz des CSS-Befehls &#8220;<code>display: none;</code>&#8221; bereits beim Rendern der Seite geladen. (Das Gleiche gilt für &#8220;visibility: hidden;&#8221;.)</p>
<p>Diese Möglichkeit kommt also ebenfalls nicht in Frage.</p>
<h2>Möglichkeit 3: Platzhalter &#038; nachträglich laden</h2>
<p>Vorab kann ich sagen: Diese Möglichkeit funktioniert zwar, ist aber genau wie die erste Variante nicht für Bloggerei und ähnliche Dienste einsetzbar, da hier der Code verändert werden muss.</p>
<p>Anstelle des eigentlichen Bildes setzen wir einen Platzhalter ein. Zum Beispiel ein 1&#215;1 Pixel großes Bild, dass auf unserem Server liegt und natürlich verfügbar ist. Nachträglich ändern wir den <code>src</code>-Parameter des <code>img</code>-Elements.</p>
<p>Der Code sähe dann so aus:
<div class="pms">
<table class="html4strict">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sc2">&lt;<span class="kw2">html</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">head</span>&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">title</span>&gt;</span>Speedtest #3<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">title</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">head</span>&gt;</span>
&nbsp;
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">body</span> <span class="kw3">onload</span><span class="sy0">=</span><span class="st0">&quot;document.getElementsByTagName('img')[0].src = 'img/img.php'&quot;</span>&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">img</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;Speedtest&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;img/blank.jpg&quot;</span> <span class="sy0">/</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">html</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Wie bereits erwähnt, funktioniert diese Variante einwandfrei. Der Ladebalken ist verschwunden, obwohl das eigentliche Bild noch nicht geladen ist. Jedoch würden wir den Code des Anbieters verändern und das Ziel ist somit immer noch nicht erreicht.</p>
<h3>Fazit</h3>
<p>Es gibt zwar neben der vorgestellten Möglichkeit noch andere Varianten Bilder asynchron zu laden &#8211; um letztendlich den Ladebalken zu entfernen, darf das Bild jedoch noch nicht im HTML-Dokument vorhanden sein. Da dies leider von Anbietern wie Bloggerei gefordert wird, muss man sich wohl mit den längeren Ladezeiten bei Server-Problemen seitens des Anbieters zurechtfinden.</p>
<p><em>Falls mir doch jemand eine Lösung für das Problem nennen kann, wäre ich sehr dankbar!</em></p>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/html-css/" title="Alle Artikel in HTML &amp; CSS ansehen">HTML &amp; CSS</a> |
    <strong>Tags:</strong> 
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/html-css/bilder-javascript-asynchron-laden/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/html-css/bilder-javascript-asynchron-laden/#comments">2 Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=737&amp;md5=f906b89a83a3ac2087cc208e708290f9" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/html-css/bilder-javascript-asynchron-laden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=737&amp;md5=f906b89a83a3ac2087cc208e708290f9" type="text/html" />
	</item>
		<item>
		<title>HTML5 Serie: GeoLocation &#8211; Koordinaten des Besuchers auslesen</title>
		<link>http://pehbehbeh.de/webentwicklung/html-css/html5-serie-geolocation-koordinaten-des-besuchers-auslesen/</link>
		<comments>http://pehbehbeh.de/webentwicklung/html-css/html5-serie-geolocation-koordinaten-des-besuchers-auslesen/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 20:39:42 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[GeoLocation]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Koordinaten]]></category>
		<category><![CDATA[Standort]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=317</guid>
		<description><![CDATA[Mit diesem Artikel erscheint der dritte Teil meiner HTML5 Serie. Das Thema: GeoLocation. Bisher war es recht schwierig den Standort des Besuchers einer Website ausfindig zu machen. Mit HTML5 ist dies kein großes Problem mehr. Die GeoLocation-Funktion liefert den Standort &#8230; <a href="http://pehbehbeh.de/webentwicklung/html-css/html5-serie-geolocation-koordinaten-des-besuchers-auslesen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mit diesem Artikel erscheint der dritte Teil meiner HTML5 Serie. Das Thema: <strong>GeoLocation</strong>.</p>
<p>Bisher war es recht schwierig den <strong>Standort des Besuchers</strong> einer Website ausfindig zu machen. Mit HTML5 ist dies kein großes Problem mehr. Die GeoLocation-Funktion liefert den Standort des Besuchers bzw. dessen Geräts.<br />
<hr style="clear: both;" /></p>
<h2>Die Funktion</h2>
<p>In folgendem Beispiel lesen wir ganz einfach die Koordinaten des Besuchers aus. Natürlich muss dies vom Besucher bestätigt werden.
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="kw2">var</span> coords<span class="sy0">;</span>
&nbsp;
<span class="kw2">function</span> getGeoLocation<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>navigator.<span class="me1">geolocation</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// GeoLocation verfügbar</span>
&nbsp; &nbsp; &nbsp; &nbsp; navigator.<span class="me1">geolocation</span>.<span class="me1">getCurrentPosition</span><span class="br0">&#40;</span><span class="st0">'saveCoords'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// GeoLocation nicht verfügbar</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">'Die GeoLocation-Funktion wird von Ihrem Browser leider nicht unterstützt.'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw2">function</span> saveCoords<span class="br0">&#40;</span>position<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; coords <span class="sy0">=</span> position.<span class="me1">coords</span>.<span class="me1">latitude</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> position.<span class="me1">coords</span>.<span class="me1">longitude</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Im der Funktion im Code-Beispiel wird zunächst überprüft, ob der Browser GeoLocation unterstützt. Falls nicht, wird eine Fehlermeldung ausgegeben. Ansonsten werden die Koordinaten des Besuchers abgespeichert und stehen zur Verwendung bereit.</p>
<h2>Ein Beispiel</h2>
<p>Wer sich eine fertige Anwendung ansehen möchte, kann dies unter <a href="http://html5demos.com/geo">html5demos.com/geo</a> machen. Dort wird die aktuelle Position des Benutzers abgefragt und anschließend in Google Maps angezeigt.</p>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/html-css/" title="Alle Artikel in HTML &amp; CSS ansehen">HTML &amp; CSS</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/geolocation/" rel="tag">GeoLocation</a>, <a href="http://pehbehbeh.de/tag/html5/" rel="tag">HTML5</a>, <a href="http://pehbehbeh.de/tag/koordinaten/" rel="tag">Koordinaten</a>, <a href="http://pehbehbeh.de/tag/standort/" rel="tag">Standort</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/html-css/html5-serie-geolocation-koordinaten-des-besuchers-auslesen/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/html-css/html5-serie-geolocation-koordinaten-des-besuchers-auslesen/#comments">keine Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=317&amp;md5=7fe2e99d8300f620edde0c815cd2099f" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/html-css/html5-serie-geolocation-koordinaten-des-besuchers-auslesen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=317&amp;md5=7fe2e99d8300f620edde0c815cd2099f" type="text/html" />
	</item>
		<item>
		<title>Google Analytics asynchron laden</title>
		<link>http://pehbehbeh.de/webentwicklung/javascript/google-analytics-asynchron-laden/</link>
		<comments>http://pehbehbeh.de/webentwicklung/javascript/google-analytics-asynchron-laden/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 12:33:17 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[asynchron]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://pehbehbeh.de/?p=234</guid>
		<description><![CDATA[Um die Ladezeit der Website zu verbessern lässt sich Google Analytics neben der Standardmethode seit Ende letzten Jahres auch asynchron laden. Ich setzte seit heute dafür folgendes Snippet ein: 1 2 3 4 5 6 7 8 9 10 &#60;script &#8230; <a href="http://pehbehbeh.de/webentwicklung/javascript/google-analytics-asynchron-laden/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um die Ladezeit der Website zu verbessern lässt sich Google Analytics neben der Standardmethode seit Ende letzten Jahres auch asynchron laden. Ich setzte seit heute dafür folgendes Snippet ein:
<div class="pms">
<table class="javascript">
<tbody>
<tr class="li1">
<td class="ln">
<pre class="de1">1
2
3
4
5
6
7
8
9
10
</pre>
</td>
<td class="de1">
<pre class="de1"><span class="sy0">&lt;</span>script type<span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="kw2">var</span> _gaq <span class="sy0">=</span> _gaq <span class="sy0">||</span> <span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp; &nbsp; _gaq.<span class="me1">push</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="st0">'_setAccount'</span><span class="sy0">,</span> <span class="st0">'UA-XXXXX-X'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; _gaq.<span class="me1">push</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="st0">'_trackPageview'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> ga <span class="sy0">=</span> document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">'script'</span><span class="br0">&#41;</span><span class="sy0">;</span> ga.<span class="me1">type</span> <span class="sy0">=</span> <span class="st0">'text/javascript'</span><span class="sy0">;</span> ga.<span class="me1">async</span> <span class="sy0">=</span> <span class="kw2">true</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; ga.<span class="me1">src</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="st0">'https:'</span> <span class="sy0">==</span> document.<span class="me1">location</span>.<span class="me1">protocol</span> <span class="sy0">?</span> <span class="st0">'https://ssl'</span> <span class="sy0">:</span> <span class="st0">'http://www'</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'.google-analytics.com/ga.js'</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>document.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">'head'</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">||</span> document.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">'body'</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span>ga<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="sy0">&lt;/</span>script<span class="sy0">&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Lesestoff zum Thema:</strong></p>
<ul>
<li><a href="http://googlecode.blogspot.com/2009/12/google-analytics-launches-asynchronous.html">Offizielle Ankündigung im Google Code Blog</a></li>
<li><a href="http://code.google.com/intl/de/apis/analytics/docs/tracking/gaTrackingOverview.html">Dokumentation: Standardmethode</a></li>
<li><a href="http://code.google.com/intl/de/apis/analytics/docs/tracking/asyncTracking.html">Dokumentation: Asynchrone Methode</a></li>
</ul>
<hr />
<p>
    <strong>Kategorie:</strong> <a href="http://pehbehbeh.de/webentwicklung/" title="Alle Artikel in Webentwicklung ansehen">Webentwicklung</a> &raquo; <a href="http://pehbehbeh.de/webentwicklung/javascript/" title="Alle Artikel in JavaScript ansehen">JavaScript</a> |
    <strong>Tags:</strong> <a href="http://pehbehbeh.de/tag/asynchron/" rel="tag">asynchron</a>, <a href="http://pehbehbeh.de/tag/google/" rel="tag">Google</a>, <a href="http://pehbehbeh.de/tag/google-analytics/" rel="tag">Google Analytics</a>, <a href="http://pehbehbeh.de/tag/performance/" rel="tag">Performance</a>
</p>
<p>
    <a href="http://pehbehbeh.de/webentwicklung/javascript/google-analytics-asynchron-laden/">zum Artikel</a> |
    <a href="http://pehbehbeh.de/webentwicklung/javascript/google-analytics-asynchron-laden/#comments">2 Kommentare</a>
</p> <p><a href="http://pehbehbeh.de/?flattrss_redirect&amp;id=234&amp;md5=4b73f014b3e0d8e153160180088c9d54" title="Flattr" target="_blank"><img src="http://pehbehbeh.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://pehbehbeh.de/webentwicklung/javascript/google-analytics-asynchron-laden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://pehbehbeh.de/?flattrss_redirect&amp;id=234&amp;md5=4b73f014b3e0d8e153160180088c9d54" type="text/html" />
	</item>
	</channel>
</rss>

