<?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>Code Couch &#187; Dan</title>
	<atom:link href="http://www.codecouch.com/author/dan/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codecouch.com</link>
	<description>The ramblings of two code monkeys</description>
	<lastBuildDate>Thu, 19 Nov 2009 15:47:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to stop Internet Explorer from caching AJAX requests</title>
		<link>http://www.codecouch.com/2009/01/how-to-stop-internet-explorer-from-caching-ajax-requests/</link>
		<comments>http://www.codecouch.com/2009/01/how-to-stop-internet-explorer-from-caching-ajax-requests/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 13:53:34 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://www.codecouch.com/?p=250</guid>
		<description><![CDATA[There are several ways to solve the problem of browsers caching AJAX requests. You can use a 'cache buster' parameter, or you can set the response headers server-side. This article discusses these two options.]]></description>
			<content:encoded><![CDATA[<p>I recently had to revisit the issue of IE&#8217;s default cache settings causing problems when making AJAX requests. Out-of-the-box, the cache setting is &#8216;Automatically&#8217;, where pages are only fetched from the server if the cached content is from an earlier day, old or from an earlier session.</p>
<p>This can be a nightmare to deal with, as you cannot ask all users of a web site to change their browser settings.</p>
<p>One workaround is to use a &#8216;cache buster&#8217; parameter in your GET request. Something like this:</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript" style="color: #000000;"><span class="kw2">var</span> urlToFetch <span class="sy0">=</span> <span class="st0">'whatever.php?randNum='</span> <span class="sy0">+</span> <span class="kw2">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div>

<p>This works very well, but can have drawbacks, depending on your server setup. For example, if your application server sits behind a caching layer, you wouldn&#8217;t want the URL to be different every time for idempotent requests, as the cached version would never get used, and so your application server would get a direct hit every time.</p>
<p>One way around this without using to parameters is to set the &#8216;Cache-Control&#8217; response header to direct the browser how to cache the response.</p>
<p>The &#8216;Cache-Control&#8217; header can have various values, one of which is &#8216;no-cache&#8217;. This tells the browser that it should not cache the response, so the next time the same URL is requested, new content will always be sent (as there is no previous version in the browser&#8217;s cache).</p>
<p>This is how we do it using Groovy:</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript" style="color: #000000;">response.<span class="me1">addHeader</span> <span class="st0">&quot;Cache-Control&quot;</span><span class="sy0">,</span> <span class="st0">&quot;max-age=0,no-cache,no-store&quot;</span></pre></div></div></div>

<p>So really, which method you use boils down to this: If you know that the cache buster will have a performance hit on your setup, then don&#8217;t use it, otherwise use whichever method you prefer.</p>
<p>Also, as a developer, I can highly recommend changing your IE cache settings to &#8216;Every visit to the page&#8217;.</p>
<div class="seeThrough h2Pod "><div class="seeThroughTop"><span class="tl"></span><span class="tr"></span><span class="t"></span></div><div class="seeThroughMiddle"><span class="r"></span><span class="l"></span><span class="m"></span><div class="seeThroughContent">
	<h2>Update 10/02/2008</h2>
</div></div><div class="seeThroughBottom"><span class="bl"></span><span class="br"></span><span class="b"></span></div></div>

<p>We&#8217;re finding that with some of our automated testing, IE 7 still caches the odd file now and then. To get around this, we have modified our &#8216;Cache-Control&#8217; header to include two non-standard properties, &#8216;post-check&#8217; and &#8216;pre-check&#8217;, and added an &#8216;Expires&#8217; header as well:</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript" style="color: #000000;">response.<span class="me1">addHeader</span> <span class="st0">&quot;Cache-Control&quot;</span><span class="sy0">,</span> <span class="st0">&quot;max-age=0,no-cache,no-store,post-check=0,pre-check=0&quot;</span><span class="sy0">;</span>
response.<span class="me1">addHeader</span> <span class="st0">&quot;Expires&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Mon, 26 Jul 1997 05:00:00 GMT&quot;</span></pre></div></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codecouch.com/2009/01/how-to-stop-internet-explorer-from-caching-ajax-requests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Replacement for &#8220;bind&#8221; or &#8220;bindAsEventListener&#8221; in jQuery</title>
		<link>http://www.codecouch.com/2008/12/replacement-for-bind-or-bindaseventlistener-in-jquery/</link>
		<comments>http://www.codecouch.com/2008/12/replacement-for-bind-or-bindaseventlistener-in-jquery/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 20:21:47 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Binding]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://www.codecouch.com/?p=238</guid>
		<description><![CDATA[Do you need to use the equivalent of Prototype's "bind" or "bindAsEventListener" in jQuery, passing through "this" context? Read on for more!]]></description>
			<content:encoded><![CDATA[<p>After working for many years with the Prototype JS framework, I decided it was time to bite the bullet and learn jQuery.</p>
<p>There were 3 reasons, really&#8230; 1: I&#8217;ve just started a new project and don&#8217;t need most of the bloat Prototype comes with; 2: I can now make a judgement call when it comes to choosing a framework; and 3: It&#8217;s another skill on my CV <img src='http://www.codecouch.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> )</p>
<p>I&#8217;ve just spent the weekend reading <a href="http://www.amazon.co.uk/gp/product/1933988355?ie=UTF8&#038;tag=codcou-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=1933988355">jQuery in Action</a><img src="http://www.assoc-amazon.co.uk/e/ir?t=codcou-21&#038;l=as2&#038;o=2&#038;a=1933988355" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> cover-to-cover, and I can highly recommend it for intermediate or advanced developers looking to see what it offers.</p>
<p>The one thing I miss from Prototype however are the &#8220;bind&#8221; and &#8220;bindAsEventListener&#8221; commands which can set the context (&#8221;this&#8221;) of the callback &#8211; in my case, the instance of a class.</p>
<p>After a bit of searching, I found <a href="http://www.cosmocode.de/en/blogs/gohr/20060724110917/">this post by Andreas Gohr</a>. It was coderjoe&#8217;s comment that set the wheels in motion. He showed that you could rewrite this Prototype code:</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript" style="color: #000000;">initialize<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	Event.<span class="me1">observe</span><span class="br0">&#40;</span>someEl<span class="sy0">,</span> <span class="st0">'click'</span><span class="sy0">,</span>
		<span class="kw1">this</span>.<span class="me1">doSomething</span>.<span class="me1">bindAsEventListener</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>
	<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></div>

<p>as this jQuery code:</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript" style="color: #000000;">init<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="kw2">var</span> self <span class="sy0">=</span> <span class="kw1">this</span><span class="sy0">;</span>
	$<span class="br0">&#40;</span>someEl<span class="br0">&#41;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="st0">'click'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>eventData<span class="br0">&#41;</span> <span class="br0">&#123;</span>
		self.<span class="me1">doSomething</span><span class="br0">&#40;</span>eventData<span class="sy0">,</span> self<span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></div>

<p>The bind (and related) method allows you to pass three parameters, however: the event type, some data, and a callback function. If the data parameter is omitted, the callback can be put as the second parameter.</p>
<p>So, we can re-write that last example using the second data parameter, removing the need to set a scoped variable:</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript" style="color: #000000;">init<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	jQuery<span class="br0">&#40;</span>someEl<span class="br0">&#41;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="st0">'click'</span><span class="sy0">,</span> <span class="br0">&#123;</span>thisContext<span class="sy0">:</span><span class="kw1">this</span><span class="br0">&#125;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>eventData<span class="br0">&#41;</span> <span class="br0">&#123;</span>
		eventData.<span class="me1">data</span>.<span class="me1">thisContext</span>.<span class="me1">doSomething</span><span class="br0">&#40;</span>eventData<span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codecouch.com/2008/12/replacement-for-bind-or-bindaseventlistener-in-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spell checking in Firefox</title>
		<link>http://www.codecouch.com/2008/12/spell-checking-in-firefox/</link>
		<comments>http://www.codecouch.com/2008/12/spell-checking-in-firefox/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 21:07:05 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[spell]]></category>

		<guid isPermaLink="false">http://www.codecouch.com/?p=233</guid>
		<description><![CDATA[Want to know how to spell check an entire web page in Firefox? Or how to add spell-checking to fields that do not have it by default? Read on for more.]]></description>
			<content:encoded><![CDATA[<p>A handy tip I came across the other day was how to spell-check an entire web page using Firefox &#8211; not just textarea elements.</p>
<p>You basically put the page into design mode &#8211; so the content becomes editable. Enter this in the URL bar:</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript" style="color: #000000;">javascript<span class="sy0">:</span><span class="kw1">void</span><span class="br0">&#40;</span>document.<span class="me1">designMode</span><span class="sy0">=</span><span class="st0">'on'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div>

<p>You can also add spell checking to fields which do not have it by default (e.g. single-line input elements) by adding a &#8220;spellcheck&#8221; attribute set to &#8220;true&#8221;, e.g.:</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="html4strict" style="color: #000000;"><span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> spellcheck<span class="sy0">=</span><span class="st0">&quot;true&quot;</span><span class="kw2">&gt;</span></span></pre></div></div></div>

<p>See <a href="https://developer.mozilla.org/en/Controlling_spell_checking_in_HTML_forms">https://developer.mozilla.org/en/Controlling_spell_checking_in_HTML_forms</a> for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codecouch.com/2008/12/spell-checking-in-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing a disappearing caret in Firefox</title>
		<link>http://www.codecouch.com/2008/10/fixing-a-disappearing-caret-in-firefox/</link>
		<comments>http://www.codecouch.com/2008/10/fixing-a-disappearing-caret-in-firefox/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 12:45:53 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://www.codecouch.com/?p=178</guid>
		<description><![CDATA[The disappearing caret issue in Firefox is very annoying. There are many variations of this bug, most with fixes or workarounds. This fix is for the case where input elements on top of a fixed element do not have a caret.]]></description>
			<content:encoded><![CDATA[<p>There are many issues with Firefox hiding the caret (cursor) in text fields which have focus. There are various fixes, depending on the specifics of your issue, which mostly involve adding a style of &#8220;overflow:auto&#8221; to the input or container in question.</p>
<p>There is one case that doesn&#8217;t appear to have a fix, other than upgrading to Firefox 3: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=230701">The cursor (caret) in a text input turns invisible when it is over a fixed element</a>. I&#8217;ve known about this problem for a while, and have tried many solutions that fixed similar issues, but they never seemed to work for this specific one.</p>
<p>I&#8217;ve found a solution that works, but it has 2 drawbacks:</p>
<ol>
<li>It requires JavaScript to work</li>
<li>It causes rendering errors on the fixed element when scrolling (almost as if the fixed element is scrolling as well)</li>
</ol>
<p>Using the test harness below, you can see the problem and the fix. I&#8217;ve included my test background image after the code, to make the rendering problem very obvious.</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="html4strict" style="color: #000000;"><span class="sc0">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span>
<span class="sc2"><span class="kw2">&lt;html</span> xmlns<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span> <span class="kw3">dir</span><span class="sy0">=</span><span class="st0">&quot;ltr&quot;</span> <span class="kw3">lang</span><span class="sy0">=</span><span class="st0">&quot;en-US&quot;</span><span class="kw2">&gt;</span></span>
<span class="sc2"><span class="kw2">&lt;head</span> <span class="kw3">profile</span><span class="sy0">=</span><span class="st0">&quot;http://gmpg.org/xfn/11&quot;</span><span class="kw2">&gt;</span></span>
	<span class="sc2"><span class="kw2">&lt;meta</span> <span class="kw3">http-equiv</span><span class="sy0">=</span><span class="st0">&quot;content-type&quot;</span> <span class="kw3">content</span><span class="sy0">=</span><span class="st0">&quot;text/html; charset=UTF-8&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
	<span class="sc2"><span class="kw2">&lt;meta</span> <span class="kw3">http-equiv</span><span class="sy0">=</span><span class="st0">&quot;content-language&quot;</span> <span class="kw3">content</span><span class="sy0">=</span><span class="st0">&quot;en&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
	<span class="sc2"><span class="kw2">&lt;title&gt;</span></span>Disappearing caret bug - workaround<span class="sc2"><span class="kw2">&lt;/title&gt;</span></span>
&nbsp;
	<span class="sc2"><span class="kw2">&lt;style</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/css&quot;</span><span class="kw2">&gt;</span></span>
		#fixedDiv {
			width: 100%;
			height: 100%;
			top: 0px;
			left: 0px;
			background: url(caretBugBg.gif);
			position: fixed;
		}
&nbsp;
		#contentDiv {
			position: relative;
		}
	<span class="sc2"><span class="kw2">&lt;/style&gt;</span></span>
&nbsp;
	<span class="sc2"><span class="kw2">&lt;script</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span><span class="kw2">&gt;</span></span>
		function fixCaretBug() {
			document.getElementById('fixedDiv').style.zIndex = -1;
			setTimeout(fixCaretBugPartTwo, 0);
		}
&nbsp;
		function fixCaretBugPartTwo() {
			document.getElementById('fixedDiv').style.zIndex = 0;
		}
	<span class="sc2"><span class="kw2">&lt;/script&gt;</span></span>
<span class="sc2"><span class="kw2">&lt;/head&gt;</span></span>
&nbsp;
<span class="sc2"><span class="kw2">&lt;body&gt;</span></span>
	<span class="sc2"><span class="kw2">&lt;div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;fixedDiv&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span>
&nbsp;
	<span class="sc2"><span class="kw2">&lt;div</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;contentDiv&quot;</span><span class="kw2">&gt;</span></span>
		<span class="sc2"><span class="kw2">&lt;form&gt;</span></span>
			<span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;You cannot see the caret in this text input field...&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
			<span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
			<span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;button&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;Click me to fix that!&quot;</span> <span class="kw3">onclick</span><span class="sy0">=</span><span class="st0">&quot;fixCaretBug();&quot;</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
		<span class="sc2"><span class="kw2">&lt;/form&gt;</span></span>
&nbsp;
		<span class="sc2"><span class="kw2">&lt;p&gt;</span></span>This text...<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span>
		<span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
&nbsp;
		<span class="sc2"><span class="kw2">&lt;p&gt;</span></span>is used...<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span>
		<span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
&nbsp;
		<span class="sc2"><span class="kw2">&lt;p&gt;</span></span>to produce a vertical scrollbar.<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span>
		<span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
&nbsp;
		<span class="sc2"><span class="kw2">&lt;p&gt;</span></span>If you cannot see a vertical scrollbar,<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span>
		<span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
&nbsp;
		<span class="sc2"><span class="kw2">&lt;p&gt;</span></span>reduce the size of your browser window.<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span>
		<span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;br</span> <span class="sy0">/</span><span class="kw2">&gt;</span></span>
	<span class="sc2"><span class="kw2">&lt;/div&gt;</span></span>
&nbsp;
<span class="sc2"><span class="kw2">&lt;/body&gt;</span></span>
<span class="sc2"><span class="kw2">&lt;/html&gt;</span></span></pre></div></div></div>

<p>There is a small flicker when the fix is enabled, although this could potentially be fixed by hooking into the DOMContentLoaded event and running the fix before the background image is loaded.</p>
<div id="attachment_182" class="wp-caption" style="width:300px;"><div style="font-size:0px;"><a href="http://www.codecouch.com/wp-content/uploads/2008/10/caretbugbg.gif"><img src="http://www.codecouch.com/wp-content/uploads/2008/10/caretbugbg-300x225.gif" alt="A grey rectangle with a black cross on top of it" title="Disappearing caret bug - workaround demo background image" width="300" height="225" class="size-medium wp-image-182" /></a></div><div class="seeThrough markupPod "><div class="seeThroughTop"><span class="tl"></span><span class="tr"></span><span class="t"></span></div><div class="seeThroughMiddle"><span class="r"></span><span class="l"></span><span class="m"></span><div class="seeThroughContent">
My test background image</div></div><div class="seeThroughBottom"><span class="bl"></span><span class="br"></span><span class="b"></span></div></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.codecouch.com/2008/10/fixing-a-disappearing-caret-in-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a coloured gradient background without images</title>
		<link>http://www.codecouch.com/2006/05/creating-a-coloured-gradient-background-without-images/</link>
		<comments>http://www.codecouch.com/2006/05/creating-a-coloured-gradient-background-without-images/#comments</comments>
		<pubDate>Wed, 03 May 2006 10:33:23 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Graphical]]></category>
		<category><![CDATA[Demos]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.codecouch.com/?p=97</guid>
		<description><![CDATA[If you want to dynamically create a gradient background without using images, this code does the job and is flexible for most needs.]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s some code to dynamically create a gradient background without using images. The width and/or height of each colour band, as well as the total number of colour bands can be easily changed.</p>
<p>You can use &#8220;createGradientV&#8221; to create a vertical gradient (North to South), or &#8220;createGradientH&#8221; to create a horizontal gradient (West to East). Each of the functions takes one or more sets of 4 parameters, documented in the code.</p>
<p>To add more colour bands, simply add more sets of parameters  to the relevant &#8220;createGradient&#8221; method calls.</p>
<p>This code has been tested working on IE/Win 6, NN/Win 7, Opera/Win 7, FF/Win, FF/Mac, and Safari/Mac. It does NOT work on IE/Mac (tested on version 5.22).</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript" style="color: #000000;"><span class="sy0">&lt;!</span>DOCTYPE html <span class="kw2">PUBLIC</span> <span class="st0">&quot;-//W3C//DTD XHTML 1.1 Strict//EN&quot;</span> <span class="st0">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;</span><span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>html xmlns<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span> lang<span class="sy0">=</span><span class="st0">&quot;en&quot;</span> xml<span class="sy0">:</span>lang<span class="sy0">=</span><span class="st0">&quot;en&quot;</span><span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>head<span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>meta http<span class="sy0">-</span>equiv<span class="sy0">=</span><span class="st0">&quot;content-type&quot;</span> content<span class="sy0">=</span><span class="st0">&quot;text/html; charset=iso-8859-1&quot;</span> <span class="sy0">/&gt;</span>
    <span class="sy0">&lt;</span>meta http<span class="sy0">-</span>equiv<span class="sy0">=</span><span class="st0">&quot;content-language&quot;</span> content<span class="sy0">=</span><span class="st0">&quot;en&quot;</span> <span class="sy0">/&gt;</span>
    <span class="sy0">&lt;</span>title<span class="sy0">&gt;</span>Gradient Background<span class="sy0">&lt;/</span>title<span class="sy0">&gt;</span>
&nbsp;
    <span class="sy0">&lt;</span>style type<span class="sy0">=</span><span class="st0">&quot;text/css&quot;</span><span class="sy0">&gt;</span>
        body <span class="br0">&#123;</span>
            padding<span class="sy0">:</span> 0px<span class="sy0">;</span>
            margin<span class="sy0">:</span> 20px<span class="sy0">;</span>
            background<span class="sy0">-</span>color<span class="sy0">:</span> #00CCFF<span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        #fadeBandsV <span class="br0">&#123;</span>
            position<span class="sy0">:</span> absolute<span class="sy0">;</span>
            left<span class="sy0">:</span> 0px<span class="sy0">;</span>
            top<span class="sy0">:</span> 0px<span class="sy0">;</span>
            width<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%;</span>
            height<span class="sy0">:</span> 80px<span class="sy0">;</span>
            z<span class="sy0">-</span>index<span class="sy0">:</span> <span class="nu0">1</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        #fadeBandsH <span class="br0">&#123;</span>
            position<span class="sy0">:</span> absolute<span class="sy0">;</span>
            left<span class="sy0">:</span> 0px<span class="sy0">;</span>
            top<span class="sy0">:</span> 0px<span class="sy0">;</span>
            width<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%;</span>
            z<span class="sy0">-</span>index<span class="sy0">:</span> <span class="nu0">1</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        #fadeBandsV div <span class="br0">&#123;</span>
            overflow<span class="sy0">:</span> hidden<span class="sy0">;</span>
            position<span class="sy0">:</span> absolute<span class="sy0">;</span>
            width<span class="sy0">:</span> <span class="nu0">100</span><span class="sy0">%;</span>
        <span class="br0">&#125;</span>
&nbsp;
        #fadeBandsH div <span class="br0">&#123;</span>
            overflow<span class="sy0">:</span> hidden<span class="sy0">;</span>
            position<span class="sy0">:</span> absolute<span class="sy0">;</span>
            height<span class="sy0">:</span> 200px<span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        #pageContent <span class="br0">&#123;</span>
            position<span class="sy0">:</span> relative<span class="sy0">;</span>
            z<span class="sy0">-</span>index<span class="sy0">:</span> <span class="nu0">2</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
    <span class="sy0">&lt;/</span>style<span class="sy0">&gt;</span>
&nbsp;
    <span class="sy0">&lt;</span>script type<span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span>
    <span class="sy0">&lt;!--</span>
&nbsp;
        <span class="co1">// do not call this function directly - use createGradientV or createGradientH instead</span>
        <span class="kw2">function</span> createGradient<span class="br0">&#40;</span>direction<span class="sy0">,</span> args<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw2">var</span> bandSets <span class="sy0">=</span> args.<span class="me1">length</span> <span class="sy0">/</span> <span class="nu0">4</span><span class="sy0">;</span>
            <span class="kw2">var</span> startPos <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> bandSetLoop<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> bandSetLoop<span class="sy0">&lt;</span>bandSets<span class="sy0">;</span> bandSetLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                fadeFromColour <span class="sy0">=</span> args<span class="br0">&#91;</span>bandSetLoop <span class="sy0">*</span> <span class="nu0">4</span><span class="br0">&#93;</span><span class="sy0">;</span>
                fadeToColour <span class="sy0">=</span> args<span class="br0">&#91;</span>bandSetLoop <span class="sy0">*</span> <span class="nu0">4</span> <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span>
                bandSize <span class="sy0">=</span> args<span class="br0">&#91;</span>bandSetLoop <span class="sy0">*</span> <span class="nu0">4</span> <span class="sy0">+</span> <span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span>
                fadeSteps <span class="sy0">=</span> args<span class="br0">&#91;</span>bandSetLoop <span class="sy0">*</span> <span class="nu0">4</span> <span class="sy0">+</span> <span class="nu0">3</span><span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp;
                <span class="co1">// calculate stepped colour values for each band</span>
                <span class="kw2">var</span> colourSteps <span class="sy0">=</span> <span class="br0">&#91;</span>fadeFromColour.<span class="me1">concat</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="sy0">;</span>                <span class="co1">// ensure first colour is the start colour</span>
                <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> bandLoop<span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span> bandLoop<span class="sy0">&lt;</span>fadeSteps<span class="sy0">;</span> bandLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">;</span>
                    <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> rgbLoop<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> rgbLoop<span class="sy0">&lt;</span><span class="nu0">3</span><span class="sy0">;</span> rgbLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span>rgbLoop<span class="br0">&#93;</span> <span class="sy0">=</span> Math.<span class="me1">round</span><span class="br0">&#40;</span>colourSteps<span class="br0">&#91;</span>bandLoop<span class="nu0">-1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>rgbLoop<span class="br0">&#93;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>fadeToColour<span class="br0">&#91;</span>rgbLoop<span class="br0">&#93;</span> <span class="sy0">-</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="nu0">-1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>rgbLoop<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="sy0">/</span> <span class="br0">&#40;</span>fadeSteps <span class="sy0">-</span> bandLoop<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span>
&nbsp;
                <span class="co1">// now draw each band</span>
                <span class="kw1">if</span> <span class="br0">&#40;</span>direction <span class="sy0">==</span> <span class="st0">'V'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> bandLoop<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> bandLoop<span class="sy0">&lt;</span>fadeSteps<span class="sy0">;</span> bandLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'fadeBandsV'</span><span class="br0">&#41;</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span>aDiv <span class="sy0">=</span> document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">'div'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">height</span> <span class="sy0">=</span> bandSize <span class="sy0">+</span> <span class="st0">'px'</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">top</span> <span class="sy0">=</span> startPos <span class="sy0">+</span> <span class="br0">&#40;</span>bandSize <span class="sy0">*</span> bandLoop<span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'px'</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">backgroundColor</span> <span class="sy0">=</span> <span class="st0">'rgb('</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">')'</span><span class="sy0">;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
                    <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> bandLoop<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> bandLoop<span class="sy0">&lt;</span>fadeSteps<span class="sy0">;</span> bandLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'fadeBandsH'</span><span class="br0">&#41;</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span>aDiv <span class="sy0">=</span> document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">'div'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">width</span> <span class="sy0">=</span> bandSize <span class="sy0">+</span> <span class="st0">'px'</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">left</span> <span class="sy0">=</span> startPos <span class="sy0">+</span> <span class="br0">&#40;</span>bandSize <span class="sy0">*</span> bandLoop<span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'px'</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">backgroundColor</span> <span class="sy0">=</span> <span class="st0">'rgb('</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">')'</span><span class="sy0">;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span>
                startPos <span class="sy0">+=</span> fadeSteps <span class="sy0">*</span> bandSize<span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="co1">// createGradientV - creates a vertical gradient (North to South)</span>
        <span class="co1">// Parameters: createGradientV takes a single set, or multiple sets of, 4 arguments:</span>
        <span class="co1">//         argument 1: fadeFromColour = an array of R,G,B colours to fade from (for example, [0, 0, 255] == #0000FF)</span>
        <span class="co1">//         argument 2: fadeToColour = an array of R,G,B colours to fade to (for example, [0, 204, 255] == #00CCFF)</span>
        <span class="co1">//         argument 3: bandHeight = height of each colour band</span>
        <span class="co1">//         argument 4: fadeSteps = number of colour bands used for the gradient (should be at least 2)</span>
        <span class="kw2">function</span> createGradientV<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>arguments.<span class="me1">length</span> <span class="sy0">&lt;</span> <span class="nu0">1</span> <span class="sy0">||</span> arguments.<span class="me1">length</span> <span class="sy0">%</span> <span class="nu0">4</span> <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">'Incorrect usage. Number of parameters must be a multiple of 4!'</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">return</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            createGradient<span class="br0">&#40;</span><span class="st0">'V'</span><span class="sy0">,</span> arguments<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="co1">// createGradientH - creates a horizontal gradient (West to East)</span>
        <span class="co1">// Parameters: createGradientH takes a single set, or multiple sets of, 4 arguments:</span>
        <span class="co1">//         argument 1: fadeFromColour = an array of R,G,B colours to fade from (for example, [0, 0, 255] == #0000FF)</span>
        <span class="co1">//         argument 2: fadeToColour = an array of R,G,B colours to fade to (for example, [0, 204, 255] == #00CCFF)</span>
        <span class="co1">//         argument 3: bandHeight = height of each colour band</span>
        <span class="co1">//         argument 4: fadeSteps = number of colour bands used for the gradient (should be at least 2)</span>
        <span class="kw2">function</span> createGradientH<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>arguments.<span class="me1">length</span> <span class="sy0">&lt;</span> <span class="nu0">1</span> <span class="sy0">||</span> arguments.<span class="me1">length</span> <span class="sy0">%</span> <span class="nu0">4</span> <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">'Incorrect usage. Number of parameters must be a multiple of 4!'</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">return</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            createGradient<span class="br0">&#40;</span><span class="st0">'H'</span><span class="sy0">,</span> arguments<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw2">function</span> drawGradient<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            createGradientV<span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">204</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="br0">&#41;</span><span class="sy0">;</span>
            createGradientH<span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
    <span class="co1">//--&gt;</span>
    <span class="sy0">&lt;/</span>script<span class="sy0">&gt;</span>
<span class="sy0">&lt;/</span>head<span class="sy0">&gt;</span>
&nbsp;
<span class="sy0">&lt;</span>body <span class="kw3">onload</span><span class="sy0">=</span><span class="st0">&quot;drawGradient();&quot;</span><span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>div id<span class="sy0">=</span><span class="st0">&quot;fadeBandsV&quot;</span><span class="sy0">&gt;&lt;/</span>div<span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>div id<span class="sy0">=</span><span class="st0">&quot;fadeBandsH&quot;</span><span class="sy0">&gt;&lt;/</span>div<span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>div id<span class="sy0">=</span><span class="st0">&quot;pageContent&quot;</span><span class="sy0">&gt;</span>
        <span class="sy0">&lt;</span>h1<span class="sy0">&gt;</span>A test heading<span class="sy0">&lt;/</span>h1<span class="sy0">&gt;</span>
        <span class="sy0">&lt;</span>p<span class="sy0">&gt;</span>Lorem ipsum dolor sit amet<span class="sy0">,</span> consectetuer adipiscing elit. <span class="me1">Cras</span> lorem. <span class="me1">Proin</span> laoreet fringilla sem. <span class="me1">Pellentesque</span> malesuada<span class="sy0">,</span> urna tristique ornare feugiat<span class="sy0">,</span> turpis wisi ultrices nisl<span class="sy0">,</span> ac vulputate dolor justo non sapien. <span class="me1">Sed</span> fermentum velit. <span class="me1">Cum</span> sociis natoque penatibus et magnis dis parturient montes<span class="sy0">,</span> nascetur ridiculus mus. <span class="me1">Etiam</span> at nulla. <span class="me1">Maecenas</span> tortor nulla<span class="sy0">,</span> adipiscing eget<span class="sy0">,</span> auctor sed<span class="sy0">,</span> cursus id<span class="sy0">,</span> quam. <span class="me1">Suspendisse</span> at sem nonummy orci lobortis ultrices. <span class="me1">Proin</span> odio est<span class="sy0">,</span> dictum id<span class="sy0">,</span> dictum nec<span class="sy0">,</span> ullamcorper sit amet<span class="sy0">,</span> sem. <span class="me1">Proin</span> ullamcorper lacus vitae risus. <span class="me1">Nulla</span> feugiat posuere erat. <span class="kw1">In</span> nec est ac eros lacinia congue. <span class="me1">Suspendisse</span> potenti. <span class="kw1">In</span> a ipsum rhoncus ipsum volutpat consectetuer.<span class="sy0">&lt;/</span>p<span class="sy0">&gt;</span>
        <span class="sy0">&lt;</span>p<span class="sy0">&gt;</span>Lorem ipsum dolor sit amet<span class="sy0">,</span> consectetuer adipiscing elit. <span class="me1">Cras</span> lorem. <span class="me1">Proin</span> laoreet fringilla sem. <span class="me1">Pellentesque</span> malesuada<span class="sy0">,</span> urna tristique ornare feugiat<span class="sy0">,</span> turpis wisi ultrices nisl<span class="sy0">,</span> ac vulputate dolor justo non sapien. <span class="me1">Sed</span> fermentum velit. <span class="me1">Cum</span> sociis natoque penatibus et magnis dis parturient montes<span class="sy0">,</span> nascetur ridiculus mus. <span class="me1">Etiam</span> at nulla. <span class="me1">Maecenas</span> tortor nulla<span class="sy0">,</span> adipiscing eget<span class="sy0">,</span> auctor sed<span class="sy0">,</span> cursus id<span class="sy0">,</span> quam. <span class="me1">Suspendisse</span> at sem nonummy orci lobortis ultrices. <span class="me1">Proin</span> odio est<span class="sy0">,</span> dictum id<span class="sy0">,</span> dictum nec<span class="sy0">,</span> ullamcorper sit amet<span class="sy0">,</span> sem. <span class="me1">Proin</span> ullamcorper lacus vitae risus. <span class="me1">Nulla</span> feugiat posuere erat. <span class="kw1">In</span> nec est ac eros lacinia congue. <span class="me1">Suspendisse</span> potenti. <span class="kw1">In</span> a ipsum rhoncus ipsum volutpat consectetuer.<span class="sy0">&lt;/</span>p<span class="sy0">&gt;</span>
    <span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span>
<span class="sy0">&lt;/</span>body<span class="sy0">&gt;</span>
<span class="sy0">&lt;/</span>html<span class="sy0">&gt;</span></pre></div></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codecouch.com/2006/05/creating-a-coloured-gradient-background-without-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
