<?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>Tiffany B. Brown &#187; javascript</title>
	<atom:link href="http://tiffanybbrown.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://tiffanybbrown.com</link>
	<description>A web log about web development and internet culture with frequent detours into other stuff.</description>
	<lastBuildDate>Wed, 23 May 2012 16:23:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>The HTML5 video progress event: Redux</title>
		<link>http://tiffanybbrown.com/2010/07/06/the-html5-video-progress-event-redux/</link>
		<comments>http://tiffanybbrown.com/2010/07/06/the-html5-video-progress-event-redux/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 22:14:58 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[(x)HTML]]></category>
		<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[event handling]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5 video]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=4216</guid>
		<description><![CDATA[In my first post on HTML5 video and its progress event, I wrote: Only Firefox provides a means to calculate the amount of the video that has been loaded. The progress event object includes total and loaded properties that reflect the total size of the video file, and the amount the browser has retrieved from [...]]]></description>
			<content:encoded><![CDATA[<p>In my first post on <a href="http://tiffanybbrown.com/2010/07/05/the-html5-video-progress-event/">HTML5 video</a> and its progress event, I wrote:</p>
<blockquote><p>Only Firefox provides a means to calculate the amount of the video that has been loaded. The progress event object includes total and loaded properties that reflect the total size of the video file, and the amount the browser has retrieved from the server. This is also a reflection of how each browser handles video downloads.</p></blockquote>
<p>Erm, that&#8217;s only sort of true. As zcorpan <a href="http://tiffanybbrown.com/2010/07/05/the-html5-video-progress-event/#comment-60732130">explained in the comments</a>, the latest version of Firefox implements an old version of the specification. </p>
<p>In the most recent version of the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#video">HTML5 spec</a>, the total and loaded properties of the progress event were removed and (mostly) replaced by the <code>video.buffered</code> property. </p>
<p>So while Firefox 3.6.x <em>is still the only browser that provides total and loaded properties in the progress event</em>, the latest revision added a new property to the <code>video</code> element that works <strong>similarly</strong> &#8212; note the emphasis on &#8216;similarly.&#8217;</p>
<p>What&#8217;s the difference? Both the <code>total</code> and <code>loaded</code> properties of the progress event express the download&#8217;s progress <strong>in terms of bytes.</strong> The <code>video.buffered</code> property expresses the download&#8217;s progress <strong>in terms of seconds</strong>. They&#8217;re similar in that you can determine the status of a download, but using seconds instead of bytes is more relevant for seeking within a timed media file. </p>
<p>By checking <code>video.buffered.end()</code>, we can determine how many seconds of the video are available to the browser and provide the relevant error handling (if a user seeks too far) or interface changes (such as a loading progress bar).</p>
<p>I am still learning how the <code>video.buffered</code> property works, particularly in conjunction other properties and events of the video object. I will post more about this later.</p>
<p>One thing to remember: Firefox has not yet implemented the <code>video.buffered</code> property. It is only available in Safari, Chrome and (sort of) in Opera (still learning the ins-and-outs). (And Internet Explorer doesn&#8217;t support the video element <em>at all</em>, though version 9 should when it&#8217;s released.)</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2010/07/06/the-html5-video-progress-event-redux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The HTML5 video progress event</title>
		<link>http://tiffanybbrown.com/2010/07/05/the-html5-video-progress-event/</link>
		<comments>http://tiffanybbrown.com/2010/07/05/the-html5-video-progress-event/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 17:53:15 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[DOM]]></category>
		<category><![CDATA[JavaScript/ECMAScript]]></category>
		<category><![CDATA[event handling]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5 video]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[multimedia]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=4183</guid>
		<description><![CDATA[UPDATE: Thanks to zcorpan&#8217;s comments, I have posted a follow-up entry that should clarify the current status of the video element and its properties. I have been playing around with the HTML5 video interface lately, trying to understand what can be done with it, and how each browser supports its features as set forth in [...]]]></description>
			<content:encoded><![CDATA[<div class="editors-note"><b>UPDATE:</b> Thanks to zcorpan&#8217;s comments, I have posted a <a href="http://tiffanybbrown.com/2010/07/06/the-html5-video-progress-event-redux/">follow-up entry</a> that should clarify the current status of the video element and its properties.</div>
<div class="editors-note">I have been playing around with the HTML5 video interface lately, trying to understand what can be done with it, and how each browser supports its features as set forth in the <a href="http://www.w3.org/TR/html5/video.html">specification</a> (which is a working draft, and far from a final version).</p>
<p>Consider this in the first in a series of note-style posts that I will write (or perhaps not) about the HTML5 video interface as I develop an HTML5 video player interface.
</p></div>
<p>The <code>progress</code> event is fired as the browser loads more of the media file. It may not be fired reliably, however. Chrome, for example, will not fire the progress event if it has cached the video file. </p>
<p>Only Firefox provides a means to calculate the amount of the video that has been loaded. The progress event object includes <code>total</code> and <code>loaded</code> properties that reflect the total size of the video file, and the amount the browser has retrieved from the server. This is also a reflection of how each browser handles video downloads.</p>
<p>Firefox requests partial content on the initial page load, then pauses downloading until the play event is fired. After the play event is fired &#8212; whether when the user clicks the &#8216;play&#8217; button or the video tag has the <code>autoplay</code> attribute &#8212; Firefox resumes downloading the video file. </p>
<p>Safari, Chrome, and Opera conversely, download the entire video on page load &#8212; they automatically buffer by default. Opera and Chrome, however, will make the video available for play almost immediately, while Safari takes several seconds to download a larger portion of the file. Firefox will behave similarly if when the <a href="http://hacks.mozilla.org/2009/12/autobuffering-video-in-firefox/" title="autobuffering video in Firefox"><code>autobuffer</code> attribute</a> is present. </p>
<p>Presumably because they auto-buffer video, neither Safari, Chrome, nor Opera offer a means by which to detect either the video&#8217;s size, nor how much of the video has loaded.</p>
<p>Some example code for handling the progress event (assuming we&#8217;re wrapping this video element in a <code>&lt;div&gt;</code> tag with an id of &#8216;container&#8217;). This will return the percentage of the video loaded in Firefox (and other browsers that don&#8217;t auto-buffer), and fail silently in other browsers.</p>
<pre>
var container = document.getElementById('container');
var video = document.createElement(video);
// only Firefox and Opera support Ogg <ins datetime="2010-07-06T13:09:11+00:00">... oh yeah Chrome does too.</ins>
video.setAttribute('src','movie.ogv');
function progressHandler(e){
      if(e.total &#038;&#038; e.loaded){
           // percentage of video loaded
          var proportion = Math.round( e.loaded / e.total );
          return proportion * 100;
      } else {
           // do nothing because we're autobuffering.
      }
}
video.addEventListener('progress',progressHandler,false);
container.appendChild(video);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2010/07/05/the-html5-video-progress-event/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Increment and decrement, prefix and postfix</title>
		<link>http://tiffanybbrown.com/2010/06/18/increment-and-decrement-prefix-and-postfix/</link>
		<comments>http://tiffanybbrown.com/2010/06/18/increment-and-decrement-prefix-and-postfix/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 20:00:05 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[arithmetic operators]]></category>
		<category><![CDATA[decrement]]></category>
		<category><![CDATA[increment]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=4098</guid>
		<description><![CDATA[I created this example of the increment (++) and decrement (--) operators in action because I needed to see how they work in combination. I tested this example in Firefox, Safari, and later versions of Internet Explorer, but it probably works in Opera and Chrome as well.]]></description>
			<content:encoded><![CDATA[<p>I created this <a href="http://tiffanybbrown.com/code/2010/incrementdecrement/">example</a> of the increment (<code>++</code>) and decrement (<code>--</code>) operators in action because I needed to see how they work in combination.</p>
<p>I tested this example in Firefox, Safari, and later versions of Internet Explorer, but it probably works in Opera and Chrome as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2010/06/18/increment-and-decrement-prefix-and-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yes, you really do need to learn JavaScript</title>
		<link>http://tiffanybbrown.com/2009/12/03/yes-you-really-do-need-to-learn-javascript/</link>
		<comments>http://tiffanybbrown.com/2009/12/03/yes-you-really-do-need-to-learn-javascript/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 16:20:03 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php advent]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=2881</guid>
		<description><![CDATA[From Ed Finkler&#8216;s PHP Advent 2009 piece, You Really Need to Learn JavaScript: When I say &#8220;you need to learn JavaScript,&#8221; I don’t mean &#8220;learn how to copy and paste an example,&#8221; or &#8220;learn how to generate JavaScript with PHP.&#8221; I mean learn it as well as you already know PHP &#8212; or better. Why? Because JavaScript [...]]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://funkatron.com/" class="ext">Ed Finkler</a>&#8216;s PHP Advent 2009 piece, <a href="http://phpadvent.org/2009/you-really-need-to-learn-javascript-by-ed-finkler" class="ext">You Really Need to Learn JavaScript</a>:</p>
<blockquote><p>When I say &#8220;you need to learn JavaScript,&#8221; I don’t mean &#8220;learn how to copy and paste an example,&#8221; or &#8220;learn how to generate JavaScript with PHP.&#8221; I mean learn it as well as you already know PHP &#8212; or better.</p>
<p>Why? Because JavaScript drives rich clients, and all indications are that clients will be getting richer. You won&#8217;t be able to get away with just adding small snippets of JS to add tooltips and simple animations. Complex processing and UI management will require real knowledge of how to write JS, and how in [sic] interacts with the client&#8217;s APIs &#8212; the DOM, local storage, networking, OS features, and more.</p></blockquote>
<p>And I will add: not <a href="http://jquery.com/" class="ext">jQuery</a>, not <a href="http://mootools.net/" class="ext">MooTools</a>, not <a href="http://www.dojotoolkit.org/" class="ext">Dojo</a>, but real, actual, JavaScript (and <a href="http://domscripting.com/" class="ext">DOMScripting</a>). Finkler tells you why and points you to some resources for learning more. </p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2009/12/03/yes-you-really-do-need-to-learn-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Sitewide Search On A Shoe String&#8221; &#8212; now with pages!</title>
		<link>http://tiffanybbrown.com/2009/02/20/sitewide-search-on-a-shoe-string-now-with-pages/</link>
		<comments>http://tiffanybbrown.com/2009/02/20/sitewide-search-on-a-shoe-string-now-with-pages/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 09:00:04 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[DOM]]></category>
		<category><![CDATA[JavaScript/ECMAScript]]></category>
		<category><![CDATA[Search engines]]></category>
		<category><![CDATA[BOSS]]></category>
		<category><![CDATA[Chris Heilmann]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[yahoo boss]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=1794</guid>
		<description><![CDATA[Building on the work of Christian Heilmann,* and his SITESEARCH 1.0, I present a modified version of his site search script that supports paginated results. View a working example Download the JavaScript What do you have to do differently to make this work? The good news is not much . The major difference is the [...]]]></description>
			<content:encoded><![CDATA[<p>Building on the work of <a href="http://wait-till-i.com/" class="ext">Christian Heilmann</a>,* and his <a href="http://24ways.org/examples/sitewide-search-on-a-shoestring/boss-site-search.js" title="JavaScript link">SITESEARCH 1.0</a>, I present a modified version of his site search script that supports paginated results.</p>
<ul>
<li><a href="http://tiffanybbrown.com/search/">View a working example</a></li>
<li><a href="http://tiffanybbrown.com/search/search.with.pages.js">Download the JavaScript</a>
</li>
</ul>
<h2>What do you have to do differently to make this work?</h2>
<p>The good news is not much <img src='http://tiffanybbrown.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . The major difference is the <a href="http://24ways.org/2008/sitewide-search-on-a-shoestring">form</a> and added HTML markup.</p>
<pre>
&lt;form id="customsearch" action="index.html" method="get"&gt;
&lt;div id="cssrchdiv"&gt;
	&lt;input type="text" name="p" id="term" value=""&gt;
	&lt;input type="hidden" name="vs" id="site" value="YOURDOMAINNAME.COM"&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;button type="submit"&gt;Go&lt;/button&gt;
&lt;/p&gt;
&lt;/form&gt;
&lt;!--/search_form --&gt;
&lt;div id="search_results"&gt;&lt;/div&gt;
</pre>
<p>In Christian&#8217;s example, he set the form&#8217;s action to http://search.yahoo.com/search. It works beautifully if you are serving one page of results. But for our purposes, we are going to reload the current search page, parse the query string, and execute the search. That&#8217;s also why we need to add a method to the form &#8212;  &#8220;GET&#8221; &#8212; so that the form&#8217;s values get appended to the URL.</p>
<p>I also added a search_results div so that we can inject the results into a containing div (in case you need to integrate it into an existing site design).</p>
<p>The script is released under a BSD license.</p>
<p class="footnote">And by &#8220;building on,&#8221; I mean &#8220;straight jackin&#8217; it and adding a few more lines of code.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2009/02/20/sitewide-search-on-a-shoe-string-now-with-pages/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>JavaScript in Firefox 3.1 will be wicked fast</title>
		<link>http://tiffanybbrown.com/2008/08/24/javascript-in-firefox-31-will-be-wicked-fast/</link>
		<comments>http://tiffanybbrown.com/2008/08/24/javascript-in-firefox-31-will-be-wicked-fast/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 20:06:15 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[(x)HTML]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript/ECMAScript]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[Web standards]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[underarmchairmedia]]></category>
		<category><![CDATA[webdevelopment]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=1390</guid>
		<description><![CDATA[John Resig of jQuery fame, has a post about a huge performance boost coming to Firefox 3.1: TraceMonkey. TraceMonkey, Resig explains, uses a computing technique known as trace trees (PDF) which adds just-in-time native code compilation to SpiderMonkey, Firefox&#8217;s current rendering engine. What does this mean? As Resig explains: It means that JavaScript is no [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ejohn.org/blog/tracemonkey/">John Resig</a> of <a href="http://jquery.com/">jQuery</a> fame, has a post about a huge performance boost coming to Firefox 3.1: TraceMonkey. </p>
<p>TraceMonkey, Resig explains, uses a computing technique known as <a href="http://www.ics.uci.edu/%7Efranz/Site/pubs-pdf/ICS-TR-06-16.pdf">trace trees</a> (PDF) which <q>adds just-in-time native code compilation to SpiderMonkey,</q> Firefox&#8217;s current rendering engine.</p>
<p>What does this mean? As Resig explains:</p>
<blockquote cite="http://ejohn.org/blog/tracemonkey/"><p>It means that JavaScript is no longer confined by the previously-challenging resource of processing power. With this improvement it&#8217;s leap-frogged any sort of traditional and has gone head-to-head with computationally-powerful languages like C.</p></blockquote>
<p>In other words, we&#8217;ll get JavaScript processing speeds that are <a href="http://en.wikipedia.org/wiki/Usain_Bolt">Usain Bolt</a>-on-crack fast, opening the door for more powerful JavaScript-powered applications.</p>
<p>Firefox&#8217;s announcement comes a few months after the WebKit team&#8217;s announcement of <a href="http://webkit.org/blog/189/announcing-squirrelfish/">SquirrelFish</a>, which will be the JavaScript engine used in Safari 4.  </p>
<p>Resig and <a href="http://weblogs.mozillazine.org/roadmap/archives/2008/08/tracemonkey_javascript_lightsp.html">Brendan Eich also point out</a> that these TraceMonkey improvements (and presumably SquirrelFish&#8217;s improvements) in conjunction with <a href="http://www.w3.org/html/wg/html5/#the-canvas">HTML 5</a>&#8216;s <code>canvas</code> element will mean we&#8217;ll see some slick JavaScript animation and game experiences, such as <a href="http://tech.no.logi.es/woodshop/momentum6.php?webkit=1">this one</a> by  Zachary Johnson.</p>
<p><ins datetime="2008-08-24T20:17:31+00:00">The obvious roadblock to widespread adoption of all of this whiz-bangy JavaScript+&lt;canvas&gt; goodness is, of course, Internet Explorer. Internet Explorer 7 does not support the canvas element. Version 8 of the browser will not, although there is a <a href="http://blog.vlad1.com/2008/07/30/no-browser-left-behind/">workaround</a> for IE7 available. </p>
<p>Still, without the dominant web browser on board &#8212; and conceivably not coming on board for at least a few years &#8212; the widespread use of JavaScript animations may not take off for some time.</ins></p>
<p>Want to check see TraceMonkey in action? Download a <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/">nightly build</a> of Firefox (codenamed Minefield), and in the about:config panel, set <code>javascript.options.jit.content</code> equal to true.</p>
<p>Also check out Mike Schroepfer&#8217;s screencast <a href="http://blog.mozilla.com/schrep/2008/08/22/what-can-you-do-when-your-browser-is-7-times-faster/" class="blogpost title">What can you do when your browser is 7 times faster?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2008/08/24/javascript-in-firefox-31-will-be-wicked-fast/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Sniffing users&#8217; browser history and Firefox extensions to stop it</title>
		<link>http://tiffanybbrown.com/2008/02/08/sniffing-userss-browser-history-and-firefox-extensions-to-stop-it/</link>
		<comments>http://tiffanybbrown.com/2008/02/08/sniffing-userss-browser-history-and-firefox-extensions-to-stop-it/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 21:32:10 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript/ECMAScript]]></category>
		<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/2008/02/08/sniffing-userss-browser-history-and-firefox-extensions-to-stop-it/</guid>
		<description><![CDATA[Go read Niall Kennedy&#8217;s post about using JavaScript to sniff a user&#8217;s browser history. It&#8217;s an inventive use of your user&#8217;s browser history, though I suspect it could potentially be used &#8212; in combination with cookies and logins &#8212; to detect which of your users are also regular porn surfers. With that little bit of [...]]]></description>
			<content:encoded><![CDATA[<p>Go read <b>Niall Kennedy</b>&#8217;s post about using JavaScript to <a href="http://www.niallkennedy.com/blog/2008/02/browser-history-sniff.html">sniff a user&#8217;s browser history</a>.</p>
<p>It&#8217;s an inventive use of your user&#8217;s browser history, though I suspect it could potentially be used &#8212; in combination with cookies and logins &#8212; to detect which of your users are also regular porn surfers.</p>
<p>With that little bit of fearmongering out of the way, I&#8217;ll direct you to two Firefox extensions designed to stop such nosy coding (found in the comments on Niall&#8217;s post:</p>
<ul>
<li><a href="http://www.safehistory.com/">SafeHistory</a></li>
<li><a href="http://www.safecache.com/">SafeCache</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2008/02/08/sniffing-userss-browser-history-and-firefox-extensions-to-stop-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Holy War: What&#8217;s your favorite framework or toolkit?</title>
		<link>http://tiffanybbrown.com/2007/10/04/javascript-frameworks/</link>
		<comments>http://tiffanybbrown.com/2007/10/04/javascript-frameworks/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 13:55:34 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[DOM]]></category>
		<category><![CDATA[JavaScript/ECMAScript]]></category>
		<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/2007/10/04/javascript-frameworks/</guid>
		<description><![CDATA[Digital Web has two articles that are related to this post. Check out Excerpt: Accelerated DOM Scripting with Ajax, APIs and Libraries and jQuery Crash Course As the number of web-based applications grow, so do the number JavaScript frameworks and toolkits with the goal of making cross-browser development an easier process. But which to choose? [...]]]></description>
			<content:encoded><![CDATA[<p class="editors-note"><a href="http://digital-web.com/" class="website title">Digital Web</a> has two articles that are related to this post. Check out <a href="http://www.digital-web.com/articles/dom_scripting_and_libraries/">Excerpt: Accelerated DOM Scripting with Ajax, APIs and Libraries</a> and <a href="http://www.digital-web.com/articles/jquery_crash_course/">jQuery Crash Course</a></p>
<p>As the number of web-based applications grow, so do the number JavaScript frameworks and toolkits with the goal of making cross-browser development an easier process. But which to choose? </p>
<p>Well, that&#8217;s where you come in: what is your preferred JavaScript framework or toolkit? Have you tried more than one? What do you think are the strengths and weaknesses of your choice framework or toolkit as compared to others? Or maybe you hate frameworks and toolkits altogether. Duke it out in the comments.</p>
<p>Some of the combatants in this holy war (for those new to JavaScript frameworks and toolkits) include: </p>
<ul>
<li><a href="http://dojotoolkit.org/">Dojo Toolkit</a></li>
<li><a href="http://extjs.com/">Ext JS</a></li>
<li><a href="http://js.fleegix.org/">Fleejix.js</a></li>
<li><a href="http://jquery.com/">jQuery</a></li>
<li><a href="http://mochikit.com/">Mochikit</a></li>
<li><a href="http://modello.sourceforge.net/">Modello</a></li>
<li><a href="http://mootools.net/">Mootools</a></li>
<li><a href="http://prototypejs.org/">Prototype</a></li>
<li><a href="http://qooxdoo.org/">Qooxdoo</a></li>
<li><a href="http://openrico.org/rico/home.page">Rico</a></li>
<li><a href="http://www.scriptio.us/">Scriptio</a></li>
<li><a href="http://developer.yahoo.com/yui/">Yahoo! User Interface Library</a></li>
</ul>
<p>I explicitly left two libraries off of the list: <a href="http://moofx.mad4milk.net/">Moo.fx</a> and <a href="http://script.aculo.us/">Script.aculo.us</a> because they both build on other frameworks (Mootools and Prototype, respectively).</p>
<p>There&#8217;s also <a href="http://dojotoolkit.org/node/218">some debate</a> about the definition and use of the terms &#8216;framework,&#8217; and &#8216;library&#8217; (a working definition: <q cite="http://dojotoolkit.org/node/218">Frameworks tend to control the way an applications is structured and manage them from the outside</q>). I doubt very many folks can or care to parse those semantics, and I&#8217;m pretty sure I have rolled some libraries into my definition of framework. I ask your forgiveness in advance.</p>
<h3>Related posts</h3>
<ul>
<li><a href="http://www.tiffanybbrown.com/2007/06/22/great-html-css-javascript-books/">Must have HTML, CSS and JavaScript books?</a></li>
<li><a href="http://www.tiffanybbrown.com/2007/06/12/web-trend-spotting-sliding-whiz-bangy-javascript-driven-pages/">Web trend spotting: Sliding, whiz-bangy JavaScript-driven pages</a>	</li>
<li><a href="http://www.tiffanybbrown.com/2007/08/08/recommended-viewing-maintainable-javascript/">Recommended viewing: Maintainable Javascript</a></li>
<li><a href="http://tiffanybbrown.com/2007/08/28/recommended-viewing-best-practices-in-javascript-library-design/">Recommended viewing: &#8220;Best Practices in Javascript Library Design&#8221;</a></li>
</ul>
<h3>Elsewhere</h3>
<ul>
<li><a href="http://www.digital-web.com/articles/keep_javascript_simple/">Keep JavaScript Simple</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2007/10/04/javascript-frameworks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

