<?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>Nicolas Kuttler &#187; JavaScript</title>
	<atom:link href="http://www.nkuttler.de/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nkuttler.de</link>
	<description>WordPress Services, IT Services</description>
	<lastBuildDate>Wed, 28 Jul 2010 23:49:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Shortcodes,  include CSS and JS only on the correct blog pages</title>
		<link>http://www.nkuttler.de/2009/10/21/shortcodes-include-css-and-js-only-on-the-correct-blog-pages/</link>
		<comments>http://www.nkuttler.de/2009/10/21/shortcodes-include-css-and-js-only-on-the-correct-blog-pages/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 10:23:43 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.nkuttler.de/?p=1245</guid>
		<description><![CDATA[Not too long ago I wanted to add a new plugin to my blog. During various tests I noticed something quite shocking: at least one of the plugins insisted on loading it&#8217;s CSS and jquery on every page of my blog. A little more testing showed me that many plugins do the same. That&#8217;s not [...]]]></description>
			<content:encoded><![CDATA[<p>Not too long ago I wanted to add a new plugin to my blog. During various tests I noticed something quite shocking: at least one of the plugins insisted on loading it&#8217;s CSS <strong>and</strong> jquery on every page of my blog. A little more testing showed me that many plugins do the same.<span id="more-1245"></span></p>
<p>That&#8217;s not good. Yes, jquery is lightweigt, CSS files aren&#8217;t big, but that&#8217;s not a good reason for making every visitor download them. I did some research and it doesn&#8217;t look like anybody wrote about a solution yet, so here&#8217;s one way. Usually, you would add an action to <tt>wp_print_styles</tt> or <tt>wp_print_scripts</tt> that does something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wp_print_styles'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'yourplugin_include_css'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> yourplugin_include_css<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$csslink</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Instead, try this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wp_print_styles'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'yourplugin_include_css'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> yourplugin_include_css<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Check if shortcode exists in page or post content</span>
    <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$post</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_content</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'[yourshortcode]'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$csslink</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>That&#8217;s it. Please don&#8217;t add custom javascript or CSS on each and every page of my blog.</p>
<p><strong>Update</strong>: See <a href="http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/">this excellent post</a> for an improved solution.</p>
<p><strong>Update 2</strong>: <a href="http://scribu.net/wordpress/optimal-script-loading.html">The best solution for loading JavaScript so far</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nkuttler.de/2009/10/21/shortcodes-include-css-and-js-only-on-the-correct-blog-pages/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>My favorite Firefox Add-ons</title>
		<link>http://www.nkuttler.de/2009/08/25/my-favorite-firefox-add-ons/</link>
		<comments>http://www.nkuttler.de/2009/08/25/my-favorite-firefox-add-ons/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 12:02:23 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[xorg]]></category>

		<guid isPermaLink="false">http://www.nkuttler.de//?p=834</guid>
		<description><![CDATA[This is about the Firefox Add-ons I use. This really is a complete list, I like to keep my browser lean. I&#8217;m fully aware that most people will miss things like Adblock, Pixel perfect and greasemonkey, but I don&#8217;t use them. Usability Tab Kit: My favorite tab extension. Has many many features, I use it [...]]]></description>
			<content:encoded><![CDATA[<p>This is about the Firefox Add-ons I use. This really is a complete list, I like to keep my browser lean. I&#8217;m fully aware that most people will miss things like Adblock, Pixel perfect and greasemonkey, but I don&#8217;t use them.<span id="more-834"></span></p>
<a name="wptoc_0_0_0"></a><h2>Usability</h2>
<p><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/5447">Tab Kit</a>:</strong> My favorite tab extension. Has many many features, I use it mostly because it allow more than one row of tabs and tab grouping/collapsing.</p>
<p><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/2408">Clear Fields</a>:</strong> This solves a quite annoying issue with Firefox and the xorg clipboard. Xorgs lets you paste things that you have highlighted with the mouse by simply clicking the middle mouse button. However, the previous contents of the search and address fields don&#8217;t get cleared. This adds buttons to clear those fields before pasting.</p>
<a name="wptoc_0_0_1"></a><h2>Development and Webdesign</h2>
<p><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a>:</strong> The swiss army knife of web developer add-ons. To quote from it&#8217;s description: &#8220;You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page&#8221;. Very power- and useful.</p>
<p><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/4904">Gridfox</a>:</strong> Indispensable while making grid-based layouts or aligning text to a base grid.</p>
<p><strong><a href="http://livehttpheaders.mozdev.org/">Live HTTP headers</a>:</strong> This is rather esoteric, but very useful for JavaScript debugging and web app development.</p>
<p><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web Developer</a>:</strong> This is what I used before Firebug existed, and it&#8217;s still useful today.</p>
<p><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/539">MeasureIt</a>:</strong>This is very useful for quickly measuring the size of various elements on a page.</p>
<a name="wptoc_0_0_2"></a><h2>Privacy/Security</h2>
<p><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/4703">Cookie Monster</a>:</strong> The best cookie manager I could find. I always block all 3rd party cookies, and by default no website is allowed to store cookies on my computer. Cookie monster makes it very easy to allow cookies for sites I visit. Another nice feature is to only allow session cookies for some sites.</p>
<p><strong><a href="http://flashblock.mozdev.org/">Flashblock</a>:</strong> Blocks all annoying flash animations. Can whitelist sites of course. A must.</p>
<p><strong><a href="http://noscript.net/">NoScript</a>:</strong> Blocks all (3rd party) JavaScript. Indispensable security tool and gets rid of most ads as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nkuttler.de/2009/08/25/my-favorite-firefox-add-ons/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>About the nonsense of blocking and annoying IE6 users</title>
		<link>http://www.nkuttler.de/2009/03/02/about-the-nonsense-of-blocking-and-annoying-ie6-users/</link>
		<comments>http://www.nkuttler.de/2009/03/02/about-the-nonsense-of-blocking-and-annoying-ie6-users/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 15:00:46 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.nkuttler.de//?p=674</guid>
		<description><![CDATA[I know why most people who do web design, JS coding etc. loathe Internet Explorer 6. I hate having to fix stuff for any IE at all, the web would be a better place if that piece of software just died. I welcome efforts to decrease the market share of IE6, I support nagging warnings [...]]]></description>
			<content:encoded><![CDATA[<p>I know why most people who do web design, JS coding etc. loathe Internet Explorer 6. I hate having to fix stuff for any IE at all, the web would be a better place if that piece of software just died. I welcome efforts to decrease the market share of IE6, I support nagging warnings for IE6 visitors. But what&#8217;s with these nonsensical ideas of <a href="http://www.browsesad.com/">making websites look worse</a> in it or <a href="http://www.stoplivinginthepast.com/get-the-code/comment-page-1/#comment-18">blocking it</a>?<span id="more-674"></span></p>
<p>There was a time when websites used &#8220;Best viewed in Internet Explorer&#8221; or &#8220;Best viewed in Netscape&#8221; kind of texts and banners. Some sites even blocked you if you were using the &#8216;wrong&#8217; browser (it still happens today). That was stupid in the 90s, and locking out IE6 isn&#8217;t any smarter today.</p>
<p>If you want to behave like the &#8220;Best viewed in Internet Explorer&#8221; crowd of the 90s just go ahead. There was a different movement back then that still exists today: <a href="http://www.anybrowser.org/campaign/">Viewable With Any Browser</a>. There&#8217;s really no need to punish some minority browsers.</p>
<blockquote><p>Anyone who slaps a &#8216;this page is best viewed with Browser X&#8217; label on a Web page appears to be yearning for the bad old days, before the Web, when you had very little chance of reading a document written on another computer, another word processor, or another network.</p></blockquote>
<p class="blockquote-src"><a href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a> in Technology Review, July 1996</p>
<p>I guess I&#8217;ll just go on and build sites that are more or less standards-compliant and hopefully don&#8217;t require special tweaking for IE6. There are enough cross-browser tools out there. Just use your favorite search engine to find JavaScript libraries, CSS frameworks etc. Of course, something will always break in the old IEs, but don&#8217;t waste time breaking it on purpose.</p>
<p><b>Update</b>: Just found this gem from the gif-crazy 90s and had to add it:<br />
<a href="http://www.anybrowser.org/campaign/"><img src="http://www.nkuttler.de//files/2009/03/eye_eng.gif" alt="Best viewed with your eyes" width="100" height="35" class="alignnone size-full wp-image-704" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nkuttler.de/2009/03/02/about-the-nonsense-of-blocking-and-annoying-ie6-users/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>About the CSS3 border radius property</title>
		<link>http://www.nkuttler.de/2008/10/23/border-radius-in-safari/</link>
		<comments>http://www.nkuttler.de/2008/10/23/border-radius-in-safari/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 22:47:27 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[border-radius]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.nkuttler.de//?p=302</guid>
		<description><![CDATA[So I have decided to use the CSS3 border-radius property on some sites. They are personal projects so I don&#8217;t care if they look a little worse on IE. After a few tweakings I&#8217;ve ended up with using things like this: #foo &#123; border-radius: 8px 4px 4px 8px; -moz-border-radius: 8px 4px 4px 8px; -webkit-border-radius: 8px [...]]]></description>
			<content:encoded><![CDATA[<p>So I have decided to use the CSS3 border-radius property on some sites. They are personal projects so I don&#8217;t care if they look a little worse on IE. After a few tweakings I&#8217;ve ended up with using things like this:<span id="more-302"></span></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#foo</span> <span style="color: #00AA00;">&#123;</span>
    border-radius<span style="color: #00AA00;">:</span>          <span style="color: #933;">8px</span> <span style="color: #933;">4px</span> <span style="color: #933;">4px</span> <span style="color: #933;">8px</span><span style="color: #00AA00;">;</span>
    -moz-border-radius<span style="color: #00AA00;">:</span>     <span style="color: #933;">8px</span> <span style="color: #933;">4px</span> <span style="color: #933;">4px</span> <span style="color: #933;">8px</span><span style="color: #00AA00;">;</span>
    -webkit-border-radius<span style="color: #00AA00;">:</span>  <span style="color: #933;">8px</span> <span style="color: #933;">4px</span> <span style="color: #933;">4px</span> <span style="color: #933;">8px</span><span style="color: #00AA00;">;</span>
    -khtml-border-radius<span style="color: #00AA00;">:</span>   <span style="color: #933;">8px</span> <span style="color: #933;">4px</span> <span style="color: #933;">4px</span> <span style="color: #933;">8px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>No browser seems to support the first notation yet. That&#8217;s fine as CSS3 isn&#8217;t complete. However, mozilla, webkit and khtml-based browsers should be ok. IE and Opera will just ignore those.</p>
<p>The syntax differs in some details though, see for example:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">    -moz-border-radius-bottomleft<span style="color: #00AA00;">:</span>      <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
    -webkit-border-bottom-left-radius<span style="color: #00AA00;">:</span>  <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span></pre></div></div>

<p>Oh, and Safari doesn&#8217;t seem to support a radius given in percent, mozilla does:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">    -webkit-border-bottom-left-radius<span style="color: #00AA00;">:</span>  <span style="color: #933;"><span style="color: #cc66cc;">10</span>%</span><span style="color: #00AA00;">;</span></pre></div></div>

<p>This doesn&#8217;t work for me in Safari.</p>
<p> By the way, this blog&#8217;s wordpress template uses CSS3 border radiuses. Hi IE users <img src='http://www.nkuttler.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><b>Update</b>: <a href="http://snook.ca/archives/html_and_css/ie-rounded/">This post</a> led me to <a href="http://dillerdesign.com/">Drew Diller</a>&#8216;s blog. He has an <a href="http://dillerdesign.com/experiment/DD_roundies/">interesting technique for rounded corners in IE</a>.  Another technique by <a href="http://www.htmlremix.com/">Remiz</a>: see <a href="http://www.htmlremix.com/curved-corner-border-radius-cross-browser/">other technique for rounded corners in IE</a>. Who knows, maybe I will be able to deploy sites that use border radiuses in the future, even if Microsoft has no plans for supporting them in IE8.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nkuttler.de/2008/10/23/border-radius-in-safari/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Track clicks with mootools</title>
		<link>http://www.nkuttler.de/2008/10/13/track-outgoing-links-and-other-clicks-with-mootools/</link>
		<comments>http://www.nkuttler.de/2008/10/13/track-outgoing-links-and-other-clicks-with-mootools/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 08:40:00 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[clicktracking]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.nkuttler.de//?p=141</guid>
		<description><![CDATA[Why would I want to track clicks you may ask. Well, for me it&#8217;s about usability and user flow optimization. If I do some ajax/dynamic stuff on a page, I want to see what the users are doing. As they leave no visible traces in the logs, I need to add some. It&#8217;s good to [...]]]></description>
			<content:encoded><![CDATA[<p>Why would I want to track clicks you may ask. Well, for me it&#8217;s about usability and user flow optimization. If I do some ajax/dynamic stuff on a page, I want to see what the users are doing. As they leave no visible traces in the logs, I need to add some.<span id="more-141"></span></p>
<p>It&#8217;s good to know which features the users use, how often, in what order etc. Do you need to advertise some functionality more? Maybe you need to prepare better documentation so that they even know how or why to use some things?</p>
<p>If you have outgoing links, you may want to know where your users are going? The ugly way of doing this would be to use some sort of redirect URLs and monitor those. But I don&#8217;t like that way. If I use mootools anyway I can track outgoing links more elegantly. And redirects certainly can&#8217;t handle ajax stuff.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> clicktrack<span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> elements <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElements</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    elements.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #339933;">,</span> index<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span>
            <span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #003366; font-weight: bold;">new</span> Image<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'/usability/?click='</span>
                <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getParent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">id</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;&amp;amp;&quot;</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">id</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
clicktrack<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mode'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Add a HTML that looks somewhat like this to get an idea what buttons your users are clicking.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
   <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span>&gt;</span>option 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
   <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;2&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span>&gt;</span>option 2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
   <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;3&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span>&gt;</span>option 3<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></td></tr></table></div>

<p>Of course, in an ideal world, you&#8217;d want to offer non-JavaScript links too. Tracking outgoing links is even simpler, i&#8217;ll leave it as an exercise for the reader <img src='http://www.nkuttler.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nkuttler.de/2008/10/13/track-outgoing-links-and-other-clicks-with-mootools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mooified focus onload but keep backspace intact</title>
		<link>http://www.nkuttler.de/2008/10/02/mooified-focus-onload-but-keep-backspace-intact/</link>
		<comments>http://www.nkuttler.de/2008/10/02/mooified-focus-onload-but-keep-backspace-intact/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 09:46:15 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[onclick]]></category>
		<category><![CDATA[onfocus]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.nkuttler.de//?p=142</guid>
		<description><![CDATA[You may have heard about Harmen Janssen&#8217;s technique to focus input fields on pageload and keep the backspace button&#8217;s history back function intact. I wanted to play with it any my first step was to mooify his ideas. So inside the domready event I simply did: 1 2 3 4 5 6 7 8 9 [...]]]></description>
			<content:encoded><![CDATA[<p>You may have heard about Harmen Janssen&#8217;s technique to <a href="http://www.whatstyle.net/articles/51/focus_onload_but_keep_backspace_intact">focus input fields on pageload and keep the backspace button&#8217;s history back function intact</a>. I wanted to play with it any my first step was to <a href="http://www.mootools.net">mooify</a> his ideas.<span id="more-142"></span></p>
<p>So inside the domready event I simply did:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> inputify<span style="color: #009900;">&#40;</span>elem<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    elem.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    elem.<span style="color: #660066;">addEvents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">'keydown'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">key</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">'backspace'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span>elem.<span style="color: #660066;">value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                history.<span style="color: #000066;">back</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
inputify<span style="color: #009900;">&#40;</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'SomeInputfieldById'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Great, reusable, everthing works fine. Ok, so let&#8217;s incorporate my ideas from my <a href="http://www.nkuttler.de//2008/09/20/html-forms-and-onclickonfocus/">HTML forms and onclick/onfocus</a> post (basically, select on click instead of focus and pre-fill the input field):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> inputify<span style="color: #009900;">&#40;</span>elem<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> startvalue <span style="color: #339933;">=</span> elem.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
    elem.<span style="color: #660066;">select</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    elem.<span style="color: #660066;">addEvents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">'keydown'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">key</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">'backspace'</span> <span style="color: #339933;">&amp;&amp;</span> elem.<span style="color: #660066;">value</span> <span style="color: #339933;">===</span> startvalue<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                history.<span style="color: #000066;">back</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'click'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            elem.<span style="color: #660066;">select</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
inputify<span style="color: #009900;">&#40;</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'SomeInputfieldById'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Great works fine. Remember pre-filled value and only go back in history when the user hasn&#8217;t changed it. Done.</p>
<p>Wait&#8230; oh, noes! The backspace button is supposed to <span style="text-decoration: underline">delete</span> the input. Now, most users will unwillingly trigger the history back function. That&#8217;s as broken as it gets&#8230; Well, in theory I could focus the input field instead of selecting it, and use something like caretPos, and only go back in history if it&#8217;s at the start&#8230; But that&#8217;s not what I had in mind (well not sure <u>what</u> I was thinking anyway&#8230;)</p>
<p>So I consider this technique unusable for the time being for my own sites. The only times I focus some input field onload is for search functions anyway. There, I&#8217;d rather annoy a few users and improve the overall usability of the site. Like Harmen said in his post, don&#8217;t use onload input focus just because you can <img src='http://www.nkuttler.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nkuttler.de/2008/10/02/mooified-focus-onload-but-keep-backspace-intact/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Help! My mootools script doesn&#039;t work in IE!</title>
		<link>http://www.nkuttler.de/2008/09/22/help-my-mootools-script-doesnt-work-in-ie/</link>
		<comments>http://www.nkuttler.de/2008/09/22/help-my-mootools-script-doesnt-work-in-ie/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 07:37:14 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.nkuttler.de//?p=68</guid>
		<description><![CDATA[Today I went through the pain of installing Windows XP. On QEMU. I wanted to do some JavaScript debugging for mootools. It turned out that IE was just a little picky about list formatting. Whenever you list things, IE scripting breaks if you add a comma behind the last element. It&#8217;s probably incorrect to add [...]]]></description>
			<content:encoded><![CDATA[<p>Today I went through the pain of installing Windows XP. On <a href="http://www.qemu.org">QEMU</a>. I wanted to do some JavaScript debugging for mootools. It turned out that IE was just a little picky about list formatting.<span id="more-68"></span></p>
<p>Whenever you list things, IE scripting breaks if you add a comma behind the last element. It&#8217;s probably incorrect to add a comma and the examples at <a href="http://docs.mootools.net">docs.mootools.net</a> are all correct. But it surprised me nonetheless as IE lets terribly broken HTML pass and other browsers are more forgiving. Anyway, fixing sloppy code is always a good thing.</p>
<p>This won&#8217;t work in the Internet Explorer I tested:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> elements <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'sidebar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElements</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    elements.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #339933;">,</span> index<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> elem <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        elem.<span style="color: #660066;">addEvents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #3366CC;">'mouseenter'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                elem.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#ccf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
            <span style="color: #3366CC;">'mouseleave'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #003366; font-weight: bold;">var</span> myFx <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>elem<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
                    duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">250</span><span style="color: #339933;">,</span>
                    link<span style="color: #339933;">:</span> <span style="color: #3366CC;">'ignore'</span><span style="color: #339933;">,</span>
                    transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'sine:out'</span><span style="color: #339933;">,</span>
                <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                myFx.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#ccf'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#eef'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>(Errors on lines 13 and 16)</p>
<p>This will work:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> elements <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'sidebar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElements</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    elements.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #339933;">,</span> index<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> elem <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        elem.<span style="color: #660066;">addEvents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #3366CC;">'mouseenter'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                elem.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#ccf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
            <span style="color: #3366CC;">'mouseleave'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #003366; font-weight: bold;">var</span> myFx <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>elem<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
                    duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">250</span><span style="color: #339933;">,</span>
                    link<span style="color: #339933;">:</span> <span style="color: #3366CC;">'ignore'</span><span style="color: #339933;">,</span>
                    transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'sine:out'</span>
                <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                myFx.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#ccf'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#eef'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Some day I may read through the <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">JavaScript specs</a> and find out if this behaviour is to be expected. Another resource I haven&#8217;t gone through yet is this <a href="http://mootools.net/blog/2007/06/05/help-i-dont-know-javascript/">excellent post</a> at the mootools blog.</p>
<p>If you&#8217;re interested in debugging JavaScript for IE you should read this <a href="http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html">How to debug JavaScript in IE</a> as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nkuttler.de/2008/09/22/help-my-mootools-script-doesnt-work-in-ie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML forms and onclick/onfocus</title>
		<link>http://www.nkuttler.de/2008/09/20/html-forms-and-onclickonfocus/</link>
		<comments>http://www.nkuttler.de/2008/09/20/html-forms-and-onclickonfocus/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 08:34:39 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[onclick]]></category>
		<category><![CDATA[onfocus]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.nkuttler.de//?p=17</guid>
		<description><![CDATA[When you use HTML forms it is often desirable to pre-fill some input fields. Your idea could be that you want to give your visitors some clue to what they&#8217;re supposed to fill in.This looks nice, for example: When the user clicks into the field you&#8217;ll want to remove the clue. The obvious way to [...]]]></description>
			<content:encoded><![CDATA[<p>When you use HTML forms it is often desirable to pre-fill some input fields. Your idea could be that you want to give your visitors some clue to what they&#8217;re supposed to fill in.<span id="more-17"></span>This looks nice, for example:</p>
<form>
<input type="text" value="Your email" /></form>
<p>When the user clicks into the field you&#8217;ll want to remove the clue. The obvious way to do this is to add an onclick JavaScript command:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">onclick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;this.value=''&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Your email&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span></pre></div></div>

<form>
<input onclick="this.value=''" type="text" value="Your email" /></form>
<p>The user can still access the input field through other means than clicking. He can use the tab key for example. That&#8217;s why usually the onfocus event is more useful:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">onfocus</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;this.value=''&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Your email&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span></pre></div></div>

<form>
<input onfocus="this.value=''" type="text" value="Your email" />
</form>
<p>This seems to work nicely. However there&#8217;s still a problem. When a user fills in his email address, reads a little more on your site and clicks the input field again, his address will be removed again! So to make sure this doesn&#8217;t happen we add a little check for the content of the field:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Your email&quot;</span> <span style="color: #000066;">onfocus</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;if (this.value == 'Your email') {this.value=''}&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span></pre></div></div>

<p>And here it is:</p>
<form>
<input type="text" value="Your email" onfocus="if (this.value == 'Your email') {this.value=''}" />
</form>
<a name="wptoc_0_0_0"></a><h2>Restore default value if nothing is entered</h2>
<p>Ok, now this is working. However, when your visitor decides not to input any data, the field stays empty. If you have no label for the input he or she might forget what the field was for. We fix this by restoring the default value when the input field is left:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Your email&quot;</span> <span style="color: #000066;">onblur</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;if(this.value == '') { this.value='Your email'}&quot;</span> <span style="color: #000066;">onfocus</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;if (this.value == 'Your email') {this.value=''}&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span></pre></div></div>

<form>
<input type="text" value="Your email" onblur="if(this.value == '') { this.value='Your email'}" onfocus="if (this.value == 'Your email') {this.value=''}" />
</form>
<p>Thanks to Ray for his example linked in the comments.</p>
<a name="wptoc_0_0_1"></a><h2>Select onclick</h2>
<p>But sometimes this isn&#8217;t the best solution. It could be more desirable to highlight the content of the input field if you&#8217;re offering some kind of search. The user may not want to start a new search but to modify the existing one.</p>
<p>By highlighting the input field the user can choose to either empy it by starting to type or to modify it by using the arrow keys.</p>
<form>
<input onfocus="this.select()" type="text" value="Your previous searcj" />
</form>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">onfocus</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;this.select()&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Your previous searcj&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span></pre></div></div>

<a name="wptoc_0_0_2"></a><h2>Dynamic input color</h2>
<p>This is a little advanced. Let&#8217;s assume you want the default value to be in a different color and change it onclick. This is one working solution:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;color: #f00&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Your email&quot;</span> <span style="color: #000066;">onblur</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;if(this.value == '') { this.style.color='#f00'; this.value='Your email'}&quot;</span> <span style="color: #000066;">onfocus</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;if (this.value == 'Your email') {this.style.color='#0f0'; this.value=''}&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span></pre></div></div>

<form>
<input style="color: #f00" type="text" value="Your email" onblur="if(this.value == '') { this.style.color='#f00'; this.value='Your email'}" onfocus="if (this.value == 'Your email') {this.style.color='#0f0'; this.value=''}" />
</form>
<p>Keep in mind that this might create problems when you reload the page. Some browsers will remember the value of the input field, and the color will be different even though the field does not contain the default value. Fixing that is beyond the scope of this post. See <tt>onload</tt> and domready events.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nkuttler.de/2008/09/20/html-forms-and-onclickonfocus/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>
