<?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>mehrwelt &#187; AJAX</title>
	<atom:link href="http://blog.mehrwert.de/category/codinglanguages/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mehrwert.de</link>
	<description>Die mehrwelt</description>
	<lastBuildDate>Sat, 07 Jan 2012 22:36:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Aptana PHP</title>
		<link>http://blog.mehrwert.de/2008/12/12/aptana-php/</link>
		<comments>http://blog.mehrwert.de/2008/12/12/aptana-php/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 11:36:57 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.de/?p=340</guid>
		<description><![CDATA[Aptana ver&#246;ffentlicht Entwicklungsumgebung f&#252;r PHP (als freies Plug-in f&#252;r Aptana Studio Die Entwicklungsumgebung Aptana PHP steht in einer ersten Version 1.0 zum Download bereit. Die Software basiert auf Eclipse und bietet Funktionenwie z.B. ein integrierter Codeassistent, eine Debuggerunterst&#252;tzung, Syntaxhervorhebung, Codegenerierung &#8230; <a href="http://blog.mehrwert.de/2008/12/12/aptana-php/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aptana ver&ouml;ffentlicht Entwicklungsumgebung f&uuml;r PHP (als freies Plug-in f&uuml;r Aptana Studio</p>
<p>Die Entwicklungsumgebung Aptana PHP steht in einer ersten Version 1.0 zum Download bereit. Die Software basiert auf Eclipse und bietet Funktionenwie z.B. ein integrierter Codeassistent, eine Debuggerunterst&uuml;tzung, Syntaxhervorhebung, Codegenerierung und Refactoring. Dazu noch PHP-typische Funktionen wie ein eingebetteter PHP-Server, Unterst&uuml;tzung f&uuml;r Remote-Debugging und die PHPDoc-Erstellung.</p>
<p><cite>PHP development and deployment just got way easier. Today, we&#8217;re pleased to announce the 1.0 availability of the Aptana PHP development environment. It&#8217;s got all the things you&#8217;d expect from a PHP IDE, plus all the Ajax tooling and other power tools from Aptana Studio. Combine that with the integrated PHP app hosting, staging and management features in Aptana Cloud and you&#8217;ve got an end-to-end PHP development and deployment environment with unprecedented ease of use.</cite></p>
<p><a href="http://www.aptana.com/blog/pcolton/aptana_php_tools_released">Meldung auf der Aptana Website</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2008/12/12/aptana-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Closer Look at YUI 3.0 PR 1: Dav Glass’s Draggable Portal Example</title>
		<link>http://blog.mehrwert.de/2008/08/16/a-closer-look-at-yui-30-pr-1-dav-glass%e2%80%99s-draggable-portal-example/</link>
		<comments>http://blog.mehrwert.de/2008/08/16/a-closer-look-at-yui-30-pr-1-dav-glass%e2%80%99s-draggable-portal-example/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 21:16:08 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.de/?p=232</guid>
		<description><![CDATA[A Closer Look at YUI 3.0 PR 1: Dav Glass’s Draggable Portal Example: &#8220; YUI 3.0 Preview Release 1 was made available on Wednesday, and with it we provided a look at how the next major iteration of YUI is &#8230; <a href="http://blog.mehrwert.de/2008/08/16/a-closer-look-at-yui-30-pr-1-dav-glass%e2%80%99s-draggable-portal-example/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yuiblog.com/blog/2008/08/15/portal-example/#comments">A Closer Look at YUI 3.0 PR 1: Dav Glass’s Draggable Portal Example</a>: &#8220;</p>
<p> <a href="http://developer.yahoo.com/yui/3/">YUI 3.0 Preview Release 1</a> was made available on Wednesday, and with it we provided a look at how the next major iteration of YUI is taking shape. Among the elements we shipped with the preview is a new example from <a href="http://blog.davglass.com/">Dav Glass</a>, the <a href="http://developer.yahoo.com/yui/3/examples/dd/portal-drag.html">Draggable Portal</a>, which exercises a broad cross section of the preview’s contents.</p>
<p><a href="http://developer.yahoo.com/yui/3/examples/dd/portal-drag_source.html"><img src="http://yuiblog.com/assets/portal.png" alt="The Portal Example in the YUI 3.0 preview release." width="510" height="205" /></a></p>
<p>The Draggable Portal is a common design pattern in which content modules on the page can be repositioned, minimized, removed, and re-added to the page. The state of the modules persists in the background, so a reload of the page or a return to the page calls up the modules in their most recently positioned state. You see variations of this design pattern on many personlizable portals like <a href="http://my.yahoo.com">My Yahoo</a>, <a href="http://netvibes.com/">NetVibes</a>, and <a href="http://google.com/ig">iGoogle</a>.</p>
<p>In this article, we’ll take a look under the hood of this example to get a richer sense of YUI’s 3.x codeline and the idioms and patterns it establishes. We’re just pulling out some specific code snippets to examine here, but you can review the full code source for <a href="http://developer.yahoo.com/yui/3/examples/dd/portal-drag.html">this example</a> — <a href="http://developer.yahoo.com/yui/3/examples/">and for 66 others</a> — on <a href="http://developer.yahoo.com/yui/3/">the YUI 3 website</a>.</p>
<p> <a href="http://yuiblog.com/blog/2008/08/15/portal-example/#more-240" class="more-link">(more…)</a></p>
<p>(Via <a href="http://yuiblog.com/blog">Yahoo! User Interface Blog</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2008/08/16/a-closer-look-at-yui-30-pr-1-dav-glass%e2%80%99s-draggable-portal-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI 3.0 Preview Release 1</title>
		<link>http://blog.mehrwert.de/2008/08/14/yui-30-preview-release-1/</link>
		<comments>http://blog.mehrwert.de/2008/08/14/yui-30-preview-release-1/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 07:21:50 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.intern/?p=202</guid>
		<description><![CDATA[YUI 3.0 Preview Release 1: &#8220; The YUI team is pleased to announce the public availability of YUI 3.0 Preview Release 1, an early look at what we&#8217;re working on for the next generation of the YUI Library. Documentation for &#8230; <a href="http://blog.mehrwert.de/2008/08/14/yui-30-preview-release-1/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yuiblog.com/blog/2008/08/13/yui3pr1/#comments">YUI 3.0 Preview Release 1</a>: &#8220;</p>
<p><a href="http://developer.yahoo.com/yui/3/"><img src="http://yuiblog.com/assets/yui3.png" alt="YUI 3.0 Preview 1 website." width="280" height="303" hspace="10" vspace="5" align="right" /></a>The YUI team is pleased to announce the public availability of <a href="http://developer.yahoo.com/yui/3/">YUI 3.0 Preview Release 1</a>, an early look at what we&rsquo;re working on for the next generation of the YUI Library. <a href="http://developer.yahoo.com/yui/3/">Documentation for YUI 3.0</a> is on the YUI website; the download is available on the <a href="http://sourceforge.net/projects/yui/">YUI project area on SourceForge</a>; you can find us with questions or comments on <a href="http://tech.groups.yahoo.com/group/yui3/">the YUI 3.x discussion forum</a>. Keep in mind that this is an early preview, not a production-quality (or even a beta) release. This release is not suitable for production use, but it will give you an idea of what we&rsquo;re working on, and it should provide a good framework for conversation about the future of the library.</p>
<h3>Five Goals for YUI 3:</h3>
<p>We&rsquo;ve talked to thousands of YUI users over the past 30 months, and based on that feedback we&rsquo;ve set five design goals for the next generation of the library. What you&rsquo;ve told us is that YUI 3.0 should be:</p>
<ul>
<li>lighter (less K-weight on the wire and on the page for most uses)</li>
<li>faster (fewer http requests, less code to write and compile, more efficient code)</li>
<li> more consistent (common naming, event signatures, and widget APIs throughout the library)</li>
<li> more powerful (do more with less implementation code)</li>
<li>more securable (safer and easier to expose to multiple developers working in the same environment; easier to run under systems like <a href="http://code.google.com/p/google-caja/">Caja</a> or <a href="http://adsafe.org/">ADsafe</a>)</li>
</ul>
<p>With this early release, we&rsquo;ve made progress toward most of these objectives &mdash; and we believe we have the right architecture in place  to meet all five as we move to GA over the next few quarters.</p>
<h3>What&rsquo;s New in YUI 3.0?</h3>
<p>When you start to write code using YUI 3.0, you&rsquo;ll notice some changes in structure and style. Here&rsquo;s a taste:</p>
<table width="100%" border="1">
<tr>
<td>Snippet:</td>
<td>What it does:</td>
</tr>
<tr>
<td>
<pre>YUI().use('node', function(Y) {
    Y.get('#demo').addClass('enabled');
});
</pre>
</td>
<td>Creates a YUI instance with the <code>node</code> module (and any dependencies) and adds the class &#8216;enabled&#8217; to the element with the <code>id</code> of &#8216;demo&#8217;.</td>
</tr>
<tr>
<td>
<pre>YUI().use('dd-drag', function(Y) {
        var dd = new Y.DD.Drag({
        node: '#demo'
    });
});</pre>
</td>
<td>Creates an instance of YUI with basic drag functionality (a subset of the <code>dd</code> module), and makes the element with the <code>id</code> of &#8216;demo&#8217; draggable.</td>
</tr>
<tr>
<td>
<pre>Y.all('.demo').addClass('enabled');</pre>
</td>
<td>Adds the class &#8216;enabled&#8217; to the all elements with the <code>className</code> &#8216;demo&#8217;.</td>
</tr>
<tr>
<td>
<pre>Y.all('.demo').set('title', 'Ready!').removeClass('disabled');</pre>
</td>
<td>Sets the title attribute of all elements with the <code>className</code> &#8216;demo&#8217; and removes the class &#8216;disabled&#8217; from each.</td>
</tr>
<tr>
<td>
<pre>Y.get('#demo').plug(Y.Plugin.Drag, {
    handles: 'h2'
});</pre>
</td>
<td>Adds the <code>Drag</code> plugin to the element with the <code>id</code> &#8216;demo&#8217;, and enables all of its <code>h2</code> children drag as handles.</td>
</tr>
<tr>
<td>
<pre>Y.on('click', function(e) {
    e.preventDefault();
    e.target.query('em').set('innerHTML', 'clicked');
}, '#demo a');</pre>
</td>
<td>Attaches a DOM event listener to all anchor elements that are children of the element with the <code>id</code> &#8216;demo&#8217;. The event handler prevents the anchor from navigating and then sets a value for the <code>innerHTML</code> of the first <code>em</code> element of the clicked anchor.</td>
</tr>
</table>
<p>What&rsquo;s different here?</p>
<ul>
<li><em>Sandboxing: </em>Each YUI instance on the page can be self-contained, protected and limited (<code>YUI().use()</code>). This segregates it from other YUI instances, tailors the functionality to your specific needs, and lets different versions of YUI play nicely together.</li>
<li><em>Modularity:</em> YUI 3 is architected to use smaller modular pieces, giving you fine-grained control over what functionality you put on the page. If you simply want to make something draggable, you can include the <code>dd-drag</code> submodule, which is a small subset of the <a href="http://developer.yahoo.com/yui/3/dd/">Drag &#038; Drop Utility</a>.</li>
<li><em>Self-completing:</em> As long as the basic YUI seed file is in place, you can make use of any functionality in the library. Tell YUI what modules you want to use, tie that to your implementation code, and YUI will bring in all necessary dependencies in a single HTTP request before executing your code.</li>
<li><em>Selectors: </em>Elements are targeted using intuitive CSS selector idioms, making it easy to grab an element or a group of elements whenever you&rsquo;re performing an operation.</li>
<li><em>Custom Events++:</em> <a href="http://developer.yahoo.com/yui/3/event/#customevent">Custom Events</a> are even more powerful in YUI 3.0, with support for bubbling, stopping propagation, assigning/preventing default behaviors, and more. In fact, the Custom Event engine provides a common interface for DOM and API events in YUI 3.0, creating a consistent idiom for all kinds of event-driven work.</li>
<li><em>Nodes and NodeLists:</em> Element references in YUI 3.0 are mediated by <a href="http://developer.yahoo.com/yui/3/node/">Node</a> and NodeList facades. Not only does this make implementation code more expressive (<code>Y.Node.get('#main ul li').addClass('foo');</code>), it makes it easier to normalize differences in browser behavior (<code>Y.Node.get('#promo').setStyle('opacity', .5);</code>).</li>
<li><em>Chaining</em>: We&rsquo;ve paid attention throughout the new architecture to the return values of methods and constructors, allowing for a more compressed chaining syntax in implementation code. </li>
</ul>
<p>And that&rsquo;s just the beginning. <a href="http://developer.yahoo.com/yui/3/examples/">Dive into the examples</a> to learn more and to see the preview release in action, including some hidden gems like full A-Grade cross-domain requests. Our resident metahacker Dav Glass created a nice multi-component example, <a href="http://developer.yahoo.com/yui/3/examples/dd/portal-drag.html">the draggable portal</a>, that will give you some sense of what&rsquo;s included in today&rsquo;s preview.</p>
<h3>Is YUI 3.0 Backward Compatible with YUI 2.x?</h3>
<p>No. YUI 3.0 builds off of the YUI 2.x codeline, but we&rsquo;ve evolved most of the core APIs in working toward the five key goals described above. As a result, migrating from YUI 2.x to 3.x will require effort at the implementation level.</p>
<p>We know that ease-of-migration will be a critical factor for all YUI users. We&rsquo;re taking two important steps to facilitate the transition as it arrives:</p>
<ul>
<li><strong>Limited compatibility layer:</strong> YUI 3.0 will ship with a limited compatibility layer for the current YUI Core (Yahoo Global Object, Dom Collection, and Event Utility). This will allow you to run many of your YUI 2.x-based implementations on top of YUI 3.0. We&rsquo;re not shipping the compatibility layer with today&rsquo;s preview, but you&rsquo;ll see it appear in a future preview or beta release prior to GA.</li>
<li><strong>Full parallel compatibility:</strong> YUI 3.0 can be run in parallel to YUI 2.x with no side effects for either version. If you choose to make the transition in stages, you can run the full 2.x stack and 3.x stack together as needed.</li>
</ul>
<p>Even with these provisions in place, we know that an API change (along with new concepts and idioms) has a real cost for everyone involved. We&rsquo;re convinced that this change is both necessary and worth the effort, and obviously we&rsquo;re going to work hard to make the value proposition compelling. </p>
<h3>What&rsquo;s Next?</h3>
<p>YUI 3.0  is a work in progress. The common widget framework for 3.0 is not included in this preview and we&rsquo;re continuing to work on refinements to the core &mdash; including optimizations to the package structure to minimize base K-weight. We anticipate the next two releases coming up as follows:</p>
<ul>
<li><strong>October 2008 &mdash; PR2:</strong> Widget Framework, sample widgets, additional utilities.</li>
<li><strong>December 2008 &mdash; Beta 1:</strong> Final mix of module structures, API completion, full complement of utilities.</li>
</ul>
<p>We have some great stuff to share as we move further along in this process. We&rsquo;ve never been more excited about YUI and its future &mdash; and we think YUI 3.0 will have a big role to play in that future.</p>
<p>(Via <a href="http://yuiblog.com/blog">Yahoo! User Interface Blog</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2008/08/14/yui-30-preview-release-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Non-blocking JavaScript Downloads</title>
		<link>http://blog.mehrwert.de/2008/07/22/non-blocking-javascript-downloads/</link>
		<comments>http://blog.mehrwert.de/2008/07/22/non-blocking-javascript-downloads/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 20:01:13 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.intern/2008/07/22/non-blocking-javascript-downloads/</guid>
		<description><![CDATA[Non-blocking JavaScript Downloads: External JavaScript files block downloads and hurt your page performance, but there is an easy way to work around this problem: use dynamic scripts tags and load scripts in parallel, improving the page loading speed and the &#8230; <a href="http://blog.mehrwert.de/2008/07/22/non-blocking-javascript-downloads/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yuiblog.com/blog/2008/07/22/non-blocking-scripts/#comments">Non-blocking JavaScript Downloads</a>: </p>
<p>External JavaScript files block downloads and hurt your page performance, but there is an easy way to work around this problem: use dynamic scripts tags and load scripts in parallel, improving the page loading speed and the user experience.</p>
<h2>The problem: scripts block downloads</h2>
<p>Let’s first take a look at what the problem is with the script downloads. The thing is that before fully downloading and parsing a script, the browser can’t tell what’s in it. It may contain <code>document.write()</code> calls which modify the DOM tree or it may even contain <code>location.href</code> and send the user to a whole new page. If that happens, any components downloaded from the previous page may never be needed. In order to avoid potentially useless downloads, browsers first download, parse and execute each script before moving on with the queue of other components waiting to be downloaded. As a result, any script on your page blocks the download process and that has a negative impact on your page loading speed.</p>
<p>Here’s how the timeline looks like when downloading a slow JavaScript file (exaggerated to take 1 second). The script download (the third row in the image) blocks the two-by-two parallel downloads of the images that follow after the script:</p>
<p><img src="http://yuiblog.com/assets/non-block-yui/1.png" alt="Timeline - Blocking behavior of JavaScript files" width="325" height="223" /></p>
<p><a href="http://yuiblog.com/assets/non-block-yui/before.html">Here’s the example</a> to test yourself.</p>
<h2>Problem 2: number of downloads per hostname</h2>
<p>Another thing to note in the timeline above is how the images following the script are downloaded two-by-two. This is because of the restriction of how many components can be downloaded in parallel. In IE &lt;= 7 and Firefox 2, it’s two components at a time (following the HTTP 1.1 specs), but both IE8 and FF3 increase the default to 6.</p>
<p>You can work around this limitation by using multiple domains to host your components, because the restriction is two components <em>per hostname</em>. For more information of this topic check the article ‘<a href="http://yuiblog.com/blog/2007/04/11/performance-research-part-4/">Maximizing Parallel Downloads in the Carpool Lane</a>’ by Tenni Theurer.</p>
<p>The important thing to note is that <em>JavaScripts block downloads across all hostnames</em>. In fact, in the example timeline above, the script is hosted on a different domain than the images, but it still blocks them.</p>
<h2>Scripts at the bottom to improve user experience</h2>
<p>As <a href="http://developer.yahoo.com/performance/rules.html">Yahoo!’s Performance rules</a> advise, you should put the scripts at the bottom of the page, towards the closing <code>&lt;/body&gt;</code> tag. This doesn’t really make the page load faster (the script still has to load), but helps with the progressive rendering of the page. The user perception is that the page is faster when they can see a visual feedback that there is progress.</p>
<h2>Non-blocking scripts</h2>
<p>It turns out that there is an easy solution to the download blocking problem: include scripts dynamically via DOM methods. How do you do that? Simply create a new <code>&lt;script&gt;</code> element and append it to the <code>&lt;head&gt;</code>:</p>
<pre>
var js = document.createElement('script');
js.src = 'myscript.js';
var head = document.getElementsByTagName('head')[0];
head.appendChild(js);
</pre>
<p>Here’s the same test from above, modified to use the script node technique. Note that the third row in the image takes just as long to download, but the other resources on the page are loading simultaneously:</p>
<p><img src="http://yuiblog.com/assets/non-block-yui/2.png" alt="Non-blocking JavaScript timeline" width="325" height="206" /></p>
<p><a href="http://feeds.yuiblog.com/~r/YahooUserInterfaceBlog/~3/342800111/after.html">Test example</a></p>
<p>As you can see the script file no longer blocks the downloads and the browser starts fetching the other components in parallel. And the overall response time is cut in half.</p>
<h2>Dependencies</h2>
<p>A problem with including scripts dynamically would be satisfying the dependencies. Imagine you’re downloading 3 scripts and <code>three.js</code> requires a function from <code>one.js</code>. How do you make sure this works?</p>
<p>Well, the simplest thing is to have only one file, this way not only avoiding the problem, but also improving performance by minimizing the number of  HTTP requests (<a href="http://developer.yahoo.com/performance/rules.html#num_http">performance rule #1</a>).</p>
<p>If you do need several files though, you can attach a listener to the script’s <code>onload</code> event (this will work in Firefox) and the <code>onreadystatechange</code> event (this will work in IE). Here’s a <a href="http://www.phpied.com/javascript-include-ready-onload/">blog post</a> that shows you how to do this. To be fully cross-browser compliant, you can do something else instead: just include a variable at the bottom of every script, as to signal ‘I’m ready’. This variable may very well be an array with elements for every script already included.</p>
<h2>Using YUI Get utility</h2>
<p>The <a href="http://developer.yahoo.com/yui/get/">YUI Get Utility</a> makes it easy for you to use script includes. For example if you want to load 3 files, <code>one.js</code>, <code>two.js</code> and <code>three.js</code>, you can simply do:</p>
<pre>
var urls = ['one.js', 'two.js', 'three.js'];
YAHOO.util.Get.script(urls);
</pre>
<p>YUI Get also helps you with satisfying dependencies, by loading the scripts in order and also by letting you pass an <code>onSuccess</code> callback function which is executed when the last script is done loading. Similarly, you can pass an <code>onFailure</code> function to handle cases where scripts fail to load.</p>
<pre>
var myHandler = {
    onSuccess: function(){
        alert(':))');
    },
    onFailure: function(){
        alert(':((');
    }
};

var urls = ['1.js', '2.js', '3.js'];
YAHOO.util.Get.script(urls, myHandler);
</pre>
<p>Again, note that YUI Get will request the scripts in sequence, one after the other. This way you don’t download all the scripts in parallel, but still, the good part is that the scripts are not blocking the rest of the images and the other components on the page. <a href="http://developer.yahoo.com/yui/examples/get/get-script-basic.html">Here’s a good example and tutorial on using YUI Get to load scripts</a>.</p>
<p>YUI Get can also include stylesheets dynamically through the method<br />
<code>YAHOO.util.Get.css()</code> [<a href="http://developer.yahoo.com/yui/examples/get/get-css-basic.html">example</a>].</p>
<p>Which brings us to the next question:</p>
<h2>And what about stylesheets?</h2>
<p>Stylesheets don’t block downloads in IE, but they do in Firefox. Applying the same technique of dynamic inserts solves the problem. You can create dynamic link tags like this:</p>
<pre>
var h = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.href = 'mycss.css';
link.type = 'text/css';
link.rel = 'stylesheet';
h.appendChild(link);
</pre>
<p>This will improve the loading time in Firefox significantly, while not affecting the loading time in IE.</p>
<p>Another positive side effect of the dynamic stylesheets (in FF) is that it helps with the progressive rendering. Usually both browsers will wait and show blank screen until the very last piece of stylesheet information is downloaded, and only then they’ll start rendering. This behavior saves them the potential work of re-rendering when new stylesheet rules come down the wire. With dynamic <code>&lt;link&gt;</code>s this is not happening in Firefox, it will render without waiting for all the styles and then re-render once they arrive. IE will behave as usual and wait.</p>
<p>But before you go ahead and implement dynamic <code>&lt;link&gt;</code> tags, consider the violation of the rule of separation of concerns: your page <em>formatting</em> (CSS) will be dependent on <em>behavior</em> (JS). In addition, this problem is going to be addressed in future Firefox versions.</p>
<h2>Other ways?</h2>
<p>There are other ways to achieve the non-blocking scripts behavior, but they all have their drawbacks.</p>
<table>
<tr>
<th>Method</th>
<th>Drawback</th>
</tr>
<tr>
<td>Using <code>defer</code> attribute of the <code>script</code> tag</td>
<td>IE-only, unreliable even there</td>
</tr>
<tr>
<td>Using <code>document.write()</code> to write a script tag</td>
<td>
<ol>
<li>Non-blocking behavior is in IE-only </li>
<li><code>document.write</code> is not a recommended coding practice</li>
</ol>
</td>
</tr>
<tr>
<td><code>XMLHttpRequest</code> to get the source then execute with <code>eval()</code>.</td>
<td>
<ol>
<li>‘<code>eval()</code> is evil’</li>
<li>same-domain policy restriction</li>
</ol>
</td>
</tr>
<tr>
<td>XHR request to get the source, create a new script tag and set its content</td>
<td>
<ol>
<li>more complex</li>
<li>same-domain policy</li>
</ol>
</td>
</tr>
<tr>
<td>Load script in an iframe</td>
<td>
<ol>
<li>complex</li>
<li>iframe overhead</li>
<li>same-domain policy</li>
</ol>
</td>
</tr>
</table>
<h2>Future</h2>
<p>Safari and IE8 are already changing the way scripts are getting loaded. Their idea is to download the scripts in parallel, but execute them in the sequence they’re found on the page. It’s likely that one day this blocking problem will become negligible, because only a few users will be using IE7 or lower and FF3 or lower. Until then, a dynamic script tag is an easy way around the problem.</p>
<h2>Summary</h2>
<ul>
<li>Scripts block downloads in FF and IE browsers and this makes your pages load slower.</li>
<li>An easy solution is to use dynamic <code>&lt;script&gt;</code> tags and prevent blocking.</li>
<li><a href="http://developer.yahoo.com/yui/get/">YUI Get Utility</a> makes it easier to do script and style includes and manage dependencies.</li>
<li>You can use dynamic <code>&lt;link&gt;</code> tags too, but consider the separation of concerns first.</li>
</ul>
<p>(Via <a href="http://yuiblog.com/blog">Yahoo! User Interface Blog</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2008/07/22/non-blocking-javascript-downloads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI 2.5.2 Released: Bug Fixes and Support for Upcoming Firefox and Opera Releases</title>
		<link>http://blog.mehrwert.de/2008/05/29/yui-252-released-bug-fixes-and-support-for-upcoming-firefox-and-opera-releases/</link>
		<comments>http://blog.mehrwert.de/2008/05/29/yui-252-released-bug-fixes-and-support-for-upcoming-firefox-and-opera-releases/#comments</comments>
		<pubDate>Thu, 29 May 2008 07:13:41 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.intern/2008/05/29/yui-252-released-bug-fixes-and-support-for-upcoming-firefox-and-opera-releases/</guid>
		<description><![CDATA[YUI 2.5.2 Released: Bug Fixes and Support for Upcoming Firefox and Opera Releases: &#8220; The YUI development team released version 2.5.2 today; you can download the new release from SourceForge or configure your implementation using the YUI Configurator. This is &#8230; <a href="http://blog.mehrwert.de/2008/05/29/yui-252-released-bug-fixes-and-support-for-upcoming-firefox-and-opera-releases/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yuiblog.com/blog/2008/05/28/yui-252/#comments">YUI 2.5.2 Released: Bug Fixes and Support for Upcoming Firefox and Opera Releases</a>: &#8220;</p>
<p><a href="http://developer.yahoo.com/yui/"><img src="http://yuiblog.com/assets/yuilib.jpg" alt="Visit the YUI web site, where you can download YUI or learn more about the libaries 30+ components that make rich internet application development easier for professionals." width="260" height="161" hspace="10" vspace="5" align="right"/></a>The YUI development team released version 2.5.2 today; you can <a href="http://developer.yahoo.com/yui/download/">download the new release from SourceForge</a> or <a href="http://developer.yahoo.com/yui/articles/hosting/#configure">configure your implementation using the YUI Configurator</a>. This is a focused release that addresses several key bugs while providing support for Firefox 3 and Opera 9.5, both of which are expected to reach GA this summer. Key points for YUI 2.5.2:</p>
<ul>
<li><strong>Anticipating Opera and Firefox updates:</strong> When <a href="http://www.mozilla.com/en-US/firefox/all-beta.html">Firefox 3</a> and <a href="http://www.opera.com/products/desktop/next/">Opera 9.5</a> go GA this summer, they will be <a href="http://developer.yahoo.com/yui/articles/gbs/">A-Grade browsers</a>, and we wanted to make sure that we anticipated those debuts with a release that was validated against the latest betas available. YUI 2.5.2 was tested against Opera 9.5b2 and Firefox 3.0RC1. In both cases, the new browsers look terrific, and this YUI release incorporates several changes that will help users make the upgrade seamlessly.</li>
<li><strong>Major bug fixes:</strong> <a href="http://developer.yahoo.com/yui/datatable/">DataTable</a>, <a href="http://developer.yahoo.com/yui/menu/">Menu</a>, <a href="http://developer.yahoo.com/yui/editor/">Rich Text Editor</a> and <a href="http://developer.yahoo.com/yui/button/">Button</a> are the key beneficiaries of bug fixes in 2.5.2, but dozens of fixes are provided throughout the library. <a href="http://tech.groups.yahoo.com/group/ydn-javascript/message/31724">Check out George Puckett&rsquo;s release rollup in the YUI Community Forum for a complete rundown of what has changed in this release.</a></li>
<li><strong>Charts Control:</strong> The experimental <a href="http://developer.yahoo.com/yui/charts/">Charts Control</a> is upgraded for 2.5.2 with support for integral legends and for three new series styles.</li>
<li><strong>ActionScript Source:</strong> The ActionScript source for components that use Flash (Charts and <a href="http://developer.yahoo.com/yui/uploader/">Uploader</a>) is now available as part of the <a href="http://developer.yahoo.com/yui/download/">download</a> for developers who want to dig more deeply into these components.</li>
</ul>
<p>After you&rsquo;ve <a href="http://developer.yahoo.com/yui/download/">downloaded YUI 2.5.2</a> (or changed your pathnames <a href="http://developer.yahoo.com/yui/articles/hosting/">using Yahoo!&rsquo;s free edge-hosting service</a>), head over to the <a href="http://tech.groups.yahoo.com/group/ydn-javascript/">YUI Community Forum</a> and let us know how it&rsquo;s working for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2008/05/29/yui-252-released-bug-fixes-and-support-for-upcoming-firefox-and-opera-releases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo: Wie man Webseiten schneller macht</title>
		<link>http://blog.mehrwert.de/2008/03/25/yahoo-wie-man-webseiten-schneller-macht/</link>
		<comments>http://blog.mehrwert.de/2008/03/25/yahoo-wie-man-webseiten-schneller-macht/#comments</comments>
		<pubDate>Tue, 25 Mar 2008 10:57:12 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Webbrowser]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.intern/2008/03/25/yahoo-wie-man-webseiten-schneller-macht/</guid>
		<description><![CDATA[Yahoo: Wie man Webseiten schneller macht: &#8220;Yahoos Exceptional-Performance-Team besch&#228;ftigt sich mit der Frage, wie man Webseiten schneller macht, von Ma&#223;nahmen auf Serverseite &#252;ber die Inhalte bis hin zu Cookies, JavaScript, CSS-Bildern und den speziellen Anforderungen mobiler Webseiten. Nach den ersten &#8230; <a href="http://blog.mehrwert.de/2008/03/25/yahoo-wie-man-webseiten-schneller-macht/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.golem.de/0803/58556.html">Yahoo: Wie man Webseiten schneller macht</a>: &#8220;Yahoos Exceptional-Performance-Team besch&auml;ftigt sich mit der Frage, wie man Webseiten schneller macht, von Ma&szlig;nahmen auf Serverseite &uuml;ber die Inhalte bis hin zu Cookies, JavaScript, CSS-Bildern und den speziellen Anforderungen mobiler Webseiten. Nach den ersten 14 Regeln f&uuml;r schnellere Webseiten hat Yahoo nun 20 weitere Tipps ver&ouml;ffentlicht. (<a href="http://www.golem.de/specials/ajax/">AJAX</a>, <a href="http://www.golem.de/specials/iphone/">iPhone</a>)&#8221;</p>
<p>(Via <a href="http://www.golem.de/">Golem.de</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2008/03/25/yahoo-wie-man-webseiten-schneller-macht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI 2.5.0 Released &#8212; Big upgrades to DataTable, new Layout Manager, Flickr-style multi-file Uploader, and more</title>
		<link>http://blog.mehrwert.de/2008/02/21/yui-250-released-big-upgrades-to-datatable-new-layout-manager-flickr-style-multi-file-uploader-and-more/</link>
		<comments>http://blog.mehrwert.de/2008/02/21/yui-250-released-big-upgrades-to-datatable-new-layout-manager-flickr-style-multi-file-uploader-and-more/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 13:54:31 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Webbrowser]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.intern/2008/02/21/yui-250-released-big-upgrades-to-datatable-new-layout-manager-flickr-style-multi-file-uploader-and-more/</guid>
		<description><![CDATA[YUI 2.5.0 Released &#8212; Big upgrades to DataTable, new Layout Manager, Flickr-style multi-file Uploader, and more: &#8220; The YUI Team just released version 2.5.0 of the library. We&#8217;ve added six new components &#8212; Layout Manager, Uploader (multi-file upload engine combining &#8230; <a href="http://blog.mehrwert.de/2008/02/21/yui-250-released-big-upgrades-to-datatable-new-layout-manager-flickr-style-multi-file-uploader-and-more/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yuiblog.com/blog/2008/02/20/yui-250-released/#comments">YUI 2.5.0 Released &mdash; Big upgrades to DataTable, new Layout Manager, Flickr-style multi-file Uploader, and more</a>: &#8220;</p>
<p>The YUI Team just released <a href="http://developer.yahoo.com/yui/download/">version 2.5.0 of the library</a>.    We&rsquo;ve added six new components &mdash; <a href="http://developer.yahoo.com/yui/layout/">Layout Manager</a>, <a href="http://developer.yahoo.com/yui/uploader/">Uploader</a> (multi-file upload engine combining Flash and JavaScript), <a href="http://developer.yahoo.com/yui/resize/">Resize Utility</a>, <a href="http://developer.yahoo.com/yui/imagecropper/">ImageCropper</a>, <a href="http://developer.yahoo.com/yui/cookie/">Cookie Utility</a> and a <a href="http://developer.yahoo.com/yui/profilerviewer/">ProfilerViewer Control</a> that works in tandem with the YUI <a href="http://developer.yahoo.com/yui/profiler/">Profiler</a>.  This release also contains major improvements to the <a href="http://developer.yahoo.com/yui/datatable/">DataTable Control</a> and new<a href="http://developer.yahoo.com/yui/slider/#dual"> Dual-Thumb Slider functionality</a> in the Slider Control.  Here are the highlights:</p>
<ul>
<li><strong>DataTable Control:</strong> Jenny Han Donnelly has been joined by Luke Smith for this development cycle, and we&rsquo;re all thrilled with what they&rsquo;ve produced. <a href="http://developer.yahoo.com/yui/datatable/">DataTable in 2.5.0</a> gets a more robust markup structure that allows greater control over all aspects of the table.  This release also includes major performance enhancements, improvements to the fixed-header implementation for vertical scrolling, built-in support for horizontal scrollling, an all-new Paginator class, support for drag-and-drop column reordering, and a new set of column APIs with hooks for showing, hiding, adding and removing columns.<br />
    <a href="http://developer.yahoo.com/yui/datatable/"><img border=0 src="http://yuiblog.com/assets/datatable.png" alt="The DataTable and its new show/hide column interface." width="510" height="289" vspace="8"/></a><br />
  DataTable has been one of YUI&rsquo;s most popular and important components since its debut, and this is its strongest release yet.  If you have existing DataTable implementations that you want to upgrade, take a look at the <a href="http://developer.yahoo.com/yui/datatable/">new User&rsquo;s Guide</a>, as it has some detailed notes about API changes.  The <a href="http://developer.yahoo.com/yui/examples/datatable/">DataTable examples roster</a> is another nice place to check out the new code in action.</li>
<li><a href="http://developer.yahoo.com/yui/layout/"><img src="http://yuiblog.com/assets/layout_small.png" alt="The YUI Layout Manager" width="300" height="192" hspace="10" vspace="5" align="right"/></a><strong>Layout Manager:</strong> Dav Glass has a lot for you to enjoy in 2.5.0, but top billing goes to his new <a href="http://developer.yahoo.com/yui/layout/">Layout Manager</a>. Layout Manager eases development of multipane UIs that take up either the full viewport or the full canvas of any block-level element. Layout Units within a layout are resizeable, collapsible, removable and swappable; transitions between expanded and collapsed states have built-in animation support. Whether you&rsquo;re creating a full-screen application like Yahoo! Mail or a rich multi-pane pop-up, Layout Manager is a great place to start.</li>
<li><strong>Uploader:</strong> If you&rsquo;ve ever built a UI for uploading files via a browser, you know what the big pain points are: One file at a time, no easy way to track upload progress, no programmatic access to file metadata, etc. The new YUI <a href="http://developer.yahoo.com/yui/uploader/">Uploader</a> addresses these issues and others, allowing for the creation of more powerful, intuitive, and responsive file upload experiences. Allen Rabinovich of the <a href="http://developer.yahoo.com/flash/astra-flash/">ASTRA Library</a> team did the legwork on this one, and it&rsquo;s the same code that underlies the Flickr Uploader.  Uploader is our second JavaScript/Flash hybrid control (following on the heels of the <a href="http://developer.yahoo.com/yui/charts/">Charts Control</a> in 2.4.0).<br />
<img src="http://yuiblog.com/assets/uploader_flickr.png" alt="The YUI Uploader is the same code that drives Flickr's multi-file photo uploading interface." width="500" height="258" vspace="5"/></li>
<li><strong>Resize Utility:</strong> Layout Manager is built upon a new YUI utility, <a href="http://developer.yahoo.com/yui/resize/">Resize</a>. Dav&rsquo;s Resize Utility formalizes the support that YUI <a href="http://developer.yahoo.com/yui/dragdrop/">Drag &#038; Drop</a> has long provided in example form and makes it easier for you to make any block-level element resizeable. Resizing can be implemented directly (the resized element resizes in real time during the interaction) or by proxy (a proxy element visualizes the interaction until its conclusion, at which time the resized element snaps to its new size).</li>
<li><a href="http://developer.yahoo.com/yui/imagecropper/"><img src="http://yuiblog.com/assets/imagecropper.png" alt="The YUI ImageCropper Control" width="220" height="148" hspace="10" vspace="5" align="right"/></a><strong>ImageCropper Control:</strong> The Resize Utility makes a lot of things easier &mdash; and one of those is the implementation of an <a href="http://developer.yahoo.com/yui/imagecropper/">ImageCropper</a> interface, which Dav built out on top of Resize for 2.5.0. Take a look at <a href="http://developer.yahoo.com/yui/examples/imagecropper/">the examples</a> and be sure to check out the support Dav provided for modifier keys in this very desktop-like UI control.</li>
<li><strong>Cookie Utility:</strong> When he&rsquo;s not busy writing books or working on My Yahoo!, Nicholas C. Zakas is cranking out new code for YUI. In 2.5.0, he contributes <a href="http://developer.yahoo.com/yui/cookie/">the Cookie Utility</a>, a simple but powerful component that helps you get maximum mileage out of your limited cookie space. Because browsers limit the number of cookies you can set per domain (and because that limitation can sneak up on you if you manage a large site with many subdomains), the Cookie Utility supports &#8216;sub-cookies.&#8217; Sub-cookies  pack multiple name-value pairs under the umbrella of a single cookie, expanding the number of data points that you can store in cookie space.</li>
<li><strong>ProfilerViewer Control:</strong> 2.4.0 saw the release of Nicholas&rsquo;s <a href="http://developer.yahoo.com/yui/profiler/">Profiler</a>, a headless, cross-browser kit for profiling JavaScript functions. To make it easier to access and interpret the data that Profiler collects, we&rsquo;ve added a <a href="http://developer.yahoo.com/yui/profilerviewer/">ProfilerViewer Control</a> in 2.5.0 that sits on top of Profiler and visulizes its accrued data. ProfilerViewer leverages the  Charts Control and the DataTable Control. Taken together, Profiler and ProfilerViewer provide another arrow in the development quiver that includes tools like Firebug&rsquo;s integrated profiling interface.
<p><a href="http://developer.yahoo.com/yui/profilerviewer/"><img src="http://yuiblog.com/assets/profilerviewer-ui.png" alt="The ProfilerViewer interface." width="500" height="365" vspace="10"/></a></li>
<li><a href="http://developer.yahoo.com/yui/slider/#dual"><img src="http://yuiblog.com/assets/dualthumbslider.png" alt="The YUI Slider Control now has dual-thumb support." width="300" height="59" hspace="10" align="right"/></a><strong>Slider Control with Dual Thumb Support:</strong> Supporting <a href="http://developer.yahoo.com/yui/slider/#dual">dual-thumb interactions in our Slider Control</a> has been on our list for awhile, and Luke took the opportunity to get this out to you in 2.5.0.  Sliders are &lsquo;finite range controls&rsquo;; dual-thumb sliders allow you specify a sub-range within the control&rsquo;s larger range.  The classic use case for dual-thumb sliders is on shopping sites, where such controls can allow users to filter results based on price range.  Check out the <a href="http://developer.yahoo.com/yui/slider/#dual">User&rsquo;s Guide</a>, <a href="http://ydn.corp.yahoo.com/yui/examples/slider/slider_dual_with_highlight.html">example</a>, and the <a href="http://yuiblog.com/assets/pdf/cheatsheets/slider.pdf">new Slider Cheatsheet</a> (which has a second page dedicated to dual-thumb implementations).</li>
<li>We&rsquo;re using this release to promote the following components from beta to GA status: <a href="http://developer.yahoo.com/yui/colorpicker/">ColorPicker Control</a>, <a href="http://developer.yahoo.com/yui/get/">Get Utility</a> (for cross-domain, dynamic loading of <a href="http://developer.yahoo.com/yui/examples/get/get-script-basic.html">script</a> and <a href="http://developer.yahoo.com/yui/examples/get/get-css-basic.html">CSS</a> files), <a href="http://developer.yahoo.com/yui/json/">JSON Utility</a>, <a href="http://developer.yahoo.com/yui/imageloader/">ImageLoader Utility</a>, and <a href="http://developer.yahoo.com/yui/yuitest/">YUI Test Utility</a>.  These promotions reflect the maturity of those components and their very low bug traffic.  As always, we&rsquo;re releasing all new-for-2.5.0 components under the beta moniker, and we&rsquo;re looking forward to your feedback on those once you get a chance to try them out.</li>
<li>Full details on the release, including a rollup of the changelog for all components and a bug/feature manifest, are available in <a href="http://tech.groups.yahoo.com/group/ydn-javascript/message/25780">Georgiann Puckett&rsquo;s update to the YUI developer forum this morning</a>.</li>
</ul>
<h3>One More Thing&#8230;</h3>
<p>YUI now ships with <a href="http://developer.yahoo.com/yui/examples/">more than 270 examples</a>, many of which are accompanied by full tutorials to help you get started using YUI. And while individual examples are good, we&rsquo;ve gotten a number of requests to create an &uuml;ber example, one that pulls in and makes use of a wide range of YUI components in a single sample application &mdash; while still being YUI-centric and not littered with noisy implementation logic.</p>
<p>The incomparably prolific Dav Glass rose to the challenge for 2.5.0 with <a href="http://developer.yahoo.com/yui/examples/layout/adv_layout_source.html">a complex, multi-component example</a> that uses <a href="http://developer.yahoo.com/yui/layout/">Layout Manager</a> as its basis and Yahoo Mail as its inspiration.</p>
<p><a href="http://developer.yahoo.com/yui/examples/layout/adv_layout_source.html"><img src="http://yuiblog.com/assets/complex_example.png" alt="Dav Glass's multi-module YUI application example." width="510" height="310" vspace="5"/></a></p>
<h3>Let&rsquo;s Celebrate!</h3>
<p>We&rsquo;re excited to get 2.5.0 out the door and, as luck would have it, we&rsquo;ve got a fantastic excuse to celebrate.  YUI&rsquo;s (and the <a href="http://developer.yahoo.com/ypatterns/">Yahoo Pattern Library</a>&rsquo;s) second anniversary party is coming up next week (February 26, 5 p.m., Sunnyvale), and we&rsquo;d love to have you join us.  <a href="http://upcoming.yahoo.com/event/415087">Sign up on Upcoming to let us know you&rsquo;ll be stopping by</a> at Yahoo! HQ for some beer and general revelry.  We look forward to showing off some of the stuff you all have been doing with YUI in the past two years and we&rsquo;ll talk a bit about where Patterns and YUI are headed from here.</p>
<p>(Via <a href="http://yuiblog.com/blog">Yahoo! User Interface Blog</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2008/02/21/yui-250-released-big-upgrades-to-datatable-new-layout-manager-flickr-style-multi-file-uploader-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI 2.3.0: Six New Components and a Prettier Face</title>
		<link>http://blog.mehrwert.de/2007/08/14/yui-230-six-new-components-and-a-prettier-face/</link>
		<comments>http://blog.mehrwert.de/2007/08/14/yui-230-six-new-components-and-a-prettier-face/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 21:06:46 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.intern/2007/08/14/yui-230-six-new-components-and-a-prettier-face/</guid>
		<description><![CDATA[YUI 2.3.0: Six New Components and a Prettier Face: &#8220; We&#8217;re pleased to announce today the release of YUI version 2.3.0. This release features six new additions to the library as well as a new skinning architecture and a new &#8230; <a href="http://blog.mehrwert.de/2007/08/14/yui-230-six-new-components-and-a-prettier-face/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yuiblog.com/blog/2007/07/31/yui-2-3-0-released/#comments">YUI 2.3.0: Six New Components and a Prettier Face</a>: &#8220;</p>
<p><a href="http://developer.yahoo.com/yui/download/"><img src="http://us.i1.yimg.com/us.yimg.com/i/ydn/yuiweb/download_1.gif" width="108" height="23" hspace="10" border="0" align="right" alt="YUI 2.3.0 is now available as a download from SourceForge."/></a>We&rsquo;re pleased to announce today the release of YUI version 2.3.0. This release features six new additions to the library as well as a new skinning architecture and a new visual treatment for most of our UI controls. All of this, plus 250 enhancements and bug fixes, is <a href="http://developer.yahoo.com/yui/download/">available for download immediately</a>.</p>
<h3><strong>Here&rsquo;s what&rsquo;s new to YUI in version 2.3.0:</strong></h3>
<ol>
<li><strong>Rich Text Editor (beta):  </strong>YUI developer <a href="http://blog.davglass.com/2006/06/yui-code-samples/">Dav Glass</a> brings you the new  <a href="http://developer.yahoo.com/yui/editor/">YUI RTE,</a> featuring rich-text editing with robust <a href="http://developer.yahoo.com/yui/articles/gbs/">A-Grade browser support</a>. Cross-browser support has always been a major challenge for RTEs, and we think you&rsquo;ll be impressed with how well this editor works across the various environments.  You can instantiate it with just a few lines of code for simple implementations, and when you need to go beyond the ordinary it&rsquo;s easy to extend the RTE&rsquo;s Toolbar with your own custom buttons.      <br />
    <a href="http://developer.yahoo.com/yui/examples/editor/flickr_editor.html"><img src="http://yuiblog.com/assets/rte.gif" alt="Try out the YUI RTE with a custom Flickr photo extension." width="520" border="0" /></a></li>
<li><strong>Base CSS:</strong> <a href="http://nate.koechley.com/blog/">Nate Koechley</a> continues to extend and refine the  YUI CSS foundation, which now includes four members &mdash; <a href="http://developer.yahoo.com/yui/reset/">Reset CSS</a> neutralizes browser CSS treatments; the new <a href="http://developer.yahoo.com/yui/base/">Base CSS</a> applies some consistent and common style treatments that many developers use as a foundation; <a href="http://developer.yahoo.com/yui/fonts/">Fonts CSS</a> provides a foundation for typography; and <a href="http://developer.yahoo.com/yui/grids/">Grids CSS</a> delivers CSS-driven wireframes for thousands of potential page designs.</li>
<li><strong>YUILoader Utility (beta):</strong>  YUI&rsquo;s most prolific author Adam Moore has contributed the new <a href="http://developer.yahoo.com/yui/yuiloader">YUILoader Utility</a>, a mechanism for loading YUI components (and/or your own custom components) on the page via client-side script. YUILoader knows all about YUI&rsquo;s dependency tree and introduces into the page only those files that are needed to support your desired components. <a href="http://developer.yahoo.com/yui/articles/hosting/">It can load files from Yahoo! servers</a> or from your own hosted location.</li>
<li><strong>ImageLoader Utility (experimental): </strong>Yahoo! Travel engineer Matt Mlinac authored the new <a href="http://developer.yahoo.com/yui/imageloader/">YUI ImageLoader Utility</a>, which allows you to defer the loading of some images to speed initial rendering time on your pages. If you suspect that you&rsquo;re serving a lot of images that are never actually seen by your users, you&rsquo;ll want to check out Matt&rsquo;s work on this clever utility. </li>
<li><strong>Color Picker Control (beta): </strong>Adam Moore built the new <a href="http://developer.yahoo.com/yui/colorpicker/">YUI Color Picker Control</a> on top of his own Slider Control. The Color Picker provides a powerful UI widget for color selection, featuring HSV, RGB, and Hex input/output and a web-safe color-selection swatch.</li>
<li><strong>YUI Test Utility (beta):</strong> <a href="http://www.nczonline.net/">Nicholas C. Zakas</a>, who works on My Yahoo! when he&rsquo;s not writing books or blogging on YUIBlog, authored our new <a href="http://developer.yahoo.com/yui/yuitest/">YUI Test Utility</a>. YUI Test introduces a flexible unit-testing framework for the YUI ecosystem and serves as the foundation for our own unit-test battery.</li>
</ol>
<h3>YUI Shows Some Skin</h3>
<p><a href="http://developer.yahoo.com/yui/articles/skinning/"><img src="http://yuiblog.com/assets/skin.gif" alt="The new YUI Sam Skin." width="300" height="289" border="0" align="right" /></a>YUI components have always been receptive to implementation-specific styling, but with 2.3.0 we&rsquo;ve moved to a more formal <a href="http://developer.yahoo.com/yui/articles/skinning/">skinning approach</a> that helps to separate core CSS definitions from purely presentational ones. YUI&rsquo;s support for skinning makes it easier for you to implement your own design on top of, say, the <a href="http://developer.yahoo.com/yui/tabview/">TabView Control</a> &mdash; and it makes it easier to share that skin with others in the community.</p>
<p>In concert with that effort, Yahoo! designer Sam Lind pitched in over the past several months to help us create an attractive, consistent visual treatment for the many UI controls in YUI that ship with a default look-and-feel. This baseline skin is much more stylish than what we&rsquo;ve shipped in the past; many thanks to Sam for his hard work.  In his honor, we&rsquo;re calling this debut visual treatment the &#8216;Sam Skin&#8217;.  Hopefully this will be just the first of many YUI skins that evolve within the developer community as time goes on.</p>
<h3>More To Come</h3>
<p>The YUI Team will have  more to say over the coming weeks about what&rsquo;s new in 2.3.0, including in-depth looks at the Rich Text Editor, <a href="http://developer.yahoo.com/yui/articles/skinning/">the skinning approach</a>, other new components, and Jenny Han&rsquo;s significantly upgraded <a href="http://developer.yahoo.com/yui/datatable/">DataTable Control</a>.  In the meantime, <a href="http://tech.groups.yahoo.com/group/ydn-javascript/message/15989">George Puckett from the YUI team has posted a detailed release manifest to our forums</a> and there are release notes accompanying every component (available <a href="http://developer.yahoo.com/yui/">on the website</a> and as part of <a href="http://developer.yahoo.com/yui/download/">the download</a>).</p>
<p>We&rsquo;ve been working hard on YUI since the last release and we&rsquo;re excited to share this work with everyone today.  Please check out the new version and let us know what you think.</p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?a=WIPRPWZj"><img src="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?i=WIPRPWZj" border="0"/></a> <a href="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?a=9Pabodp9"><img src="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?i=9Pabodp9" border="0"/></a> <a href="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?a=rymKai8S"><img src="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?i=rymKai8S" border="0"/></a> <a href="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?a=EsRIW1Pp"><img src="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?i=EsRIW1Pp" border="0"/></a>
</div>
<p>&#8221;</p>
<p>(Via <a href="http://yuiblog.com/blog">Yahoo! User Interface Blog</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2007/08/14/yui-230-six-new-components-and-a-prettier-face/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Notes on the YUI Rich Text Editor</title>
		<link>http://blog.mehrwert.de/2007/08/14/some-notes-on-the-yui-rich-text-editor/</link>
		<comments>http://blog.mehrwert.de/2007/08/14/some-notes-on-the-yui-rich-text-editor/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 21:06:17 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Webbrowser]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.intern/2007/08/14/some-notes-on-the-yui-rich-text-editor/</guid>
		<description><![CDATA[Some Notes on the YUI Rich Text Editor: &#8220; About a year ago I made a Rich Text Editor (RTE) prototype to show that it was possible to build one on top of YUI. Of all my YUI examples, it &#8230; <a href="http://blog.mehrwert.de/2007/08/14/some-notes-on-the-yui-rich-text-editor/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yuiblog.com/blog/2007/08/13/rte-notes/#comments">Some Notes on the YUI Rich Text Editor</a>: &#8220;</p>
<p><a href="http://developer.yahoo.com/yui/editor"><img src="http://yuiblog.com/assets/rte.gif" alt="The YUI Rich Text Editor" width="520" border="0" /></a></p>
<p>About a year ago I made a <a href="http://blog.davglass.com/files/yui/editor/" title="RTE Prototype">Rich Text Editor (RTE) prototype</a> to show that it was possible to build one on top of YUI. Of all <a href="http://blog.davglass.com/2006/06/yui-code-samples/">my YUI examples</a>, it quickly became one of the most requested, and the project indirectly resulted in me joining the YUI team in a formal capacity.</p>
<p>Once I started on the YUI team, building a full-featured <a href="http://developer.yahoo.com/yui/editor/">YUI Rich Text Editor</a> became my top priority. Even though there are many DHTML-based RTEs available in the open-source world, including <a href="http://www.moxiecode.com/">Moxiecode&rsquo;s</a> excellent <a href="http://tinymce.moxiecode.com/">TinyMCE</a>, there were four key reasons I took on the challenge of building a new one for YUI.</p>
<ul>
<li><strong>A-Grade browser support</strong> &#8211; Most available RTEs fail to support the full spectrum of <a href="http://developer.yahoo.com/yui/articles/gbs/">A-Grade web browsers</a>. Most support IE and Firefox well, but few support Opera and I&rsquo;m not aware of any that fully support Safari. For example, many existing RTEs don&rsquo;t offer list editing in Safari. I thought we could do better. Because YUI is committed to A-Grade browser support (and because I&rsquo;m a fanatic Mac user) fully supporting Safari was a top priority for me. Wrestling Safari into submission was no small task, and I&rsquo;ll look at some of the specific challenges below.</li>
<li><strong>Extensibility</strong> &#8211; I wanted to build an editor that would allow fellow developers to add their own unique functionality. The YUI Rich Text Editor&rsquo;s Toolbar is designed from the ground up to be extensible; the <a href="http://developer.yahoo.com/yui/examples/editor/flickr_editor.html">Flickr example</a> is meant to illustrate this, as is the example of the <a href="http://developer.yahoo.com/yui/examples/editor/cal_editor.html">Calendar Control</a> implementation.</li>
<li><strong>Accessibility</strong> &#8211; What happens when users employing assistive technologies are presented with a rich-text-editing interface? What should happen? I spent time working with Yahoo! accessibility specialist Victor Tsaran to answer those questions. I believe that I have engineered some of the answers into the YUI Rich Text Editor. This is an area of ongoing development, and I&rsquo;ll share more details as the RTE progresses out of Beta status.</li>
<li><strong>Footprint and Performance</strong> &#8211; I wanted to build an RTE that was small and fast. It&rsquo;s already lighter-weight than some, but let&rsquo;s be clear: <em>It is not there yet</em>.  You can count on the fact that I&rsquo;ll be putting a lot of effort into shrinking its footprint and improving its performance, while maintaining (and improving) consistency across the A-Grade browsers.</li>
</ul>
<h2>Current and Future Status</h2>
<p>Before I get into the fundamentals of the YUI RTE, let me give you an update on the state of the project. First, this editor is currently a <a href="http://developer.yahoo.com/yui/articles/faq/#beta">Beta control</a>, and as such there is still much work to be done. Second, it&rsquo;s neither a site editor nor a development environment. It&rsquo;s designed for simple things like web mail systems, blog posts and comments, online reviews, and so forth. However, I did try to expose as many hooks and events as possible so that others could build upon the basic A-grade browser foundation that the RTE provides.</p>
<h2>The Development Path</h2>
<p>My development approach was to bend Safari first. I built it to work in Safari 2 before retrofitting it back to Opera, then Firefox and lastly Internet Explorer. I figured that if I could make Safari do what I wanted, the other three would fall into place nicely. And they did.  By choosing to make Safari work first I was able to make the others do things in a standard way as well. I hope that Safari will eventually catch up to its A-grade peers and add support for the things that I have &lsquo;emulated&rsquo;, so I took that into consideration too.</p>
<h3>Hacking Around Safari</h3>
<p>Safari 2 is a really good browser, but it was also the most challenging browser to support with the RTE project. It lacks some serious and critical features when it comes to editing HTML content from JavaScript. I will try to explain the main hurdles that Safari presents:</p>
<p><strong>Iframe Focus</strong> &#8211; One of the biggest issues was actually quite simple to solve. Safari (and Internet Explorer) has an issue with selecting text inside of an embedded iframe. If you select  text within the editor&rsquo;s iframe then click/focus the parent document, the selection within the iframe is lost. Clearly, this makes it rather difficult for a button click to take action on the selection (because the selection is lost when you click the button!). It also makes it difficult to use, say, a <a href="http://developer.yahoo.com/yui/menu/">YUI Menu Control</a> for a drop down. As I investigated this problem, I determined that if you stop the mousedown event on the button/href the selection doesn&rsquo;t get lost. However, if something else (say a href in a dropdown menu) gets focus, the selection will still get lost. This leads me to the next Safari trick.</p>
<p><strong>Selection Object</strong> &#8211; The selection object in Safari is very limited (to say the least). To work around its limitations, the YUI RTE caches a copy of the current selection in the <code>_getSelection</code> method. Then, the next time <code>_getSelection</code> is called I  check to see if a cache existed. If the cache is there, I  &lsquo;rebuild&rsquo; the selection and destroy the cached copy. This little trick is what lets Safari use a YUI Overlay as a menu instead of the more classic approach of a select element. It&rsquo;s roundabout, but it works.</p>
<p><strong>execCommand limitations</strong> &#8211; This is the mother of all hacks for Safari (and the others). My biggest problem with the native <code>execCommand</code> method (in all browsers) is that the browser doesn&rsquo;t tell you what it applied the command to. So there is no real way to get an element reference back after running a command on a selection. The world of JavaScript editors would be so much more civilized if this would happen (<em>hint, hint, nudge, nudge</em>). So what I had to do was implement this feature myself. My current approach may not be the best way to do it (I have some other ideas that I am working through), but it does the job for now. The method is named <code>_createCurrentElement</code> and basically it runs <code>execCommand('fontname', false, 'yui-tmp');</code> on the given selection (since fontname is supported on all A-Grade browsers). It will then search the document for an element with the font-family/name set to <code>yui-tmp</code> and replace that with a span that has other information in it (attributes about the element that we wanted to create), then it will add the new span to the <code>this.currentElement</code> array, so we now have element references to the elements that were just modified. At this point we can use standard DOM manipulation to change them as we see fit. In short, I&rsquo;m using the iframe&rsquo;s DOM to store metadata during editing as a way to enrich the communication that&rsquo;s possible between the editor and the iframe. </p>
<h3>Making it Your Way</h3>
<p>Over the past few years I&rsquo;ve implemented many of the available RTEs. Because of this I brought a &lsquo;taste of your own medicine&rsquo; mentality to the table. I wanted to build an editor that was easy to extend and change. The YUI RTE has <a href="http://developer.yahoo.com/yui/event/#customevent">Custom Events</a> for everything that I could think of! I made all of the event handlers standalone functions that can be overloaded on the instance or on the prototype. I also tried to make as many things configurable as possible.</p>
<p>Just to give you an idea, let me show you a quick way to change one of the editor&rsquo;s default behaviors.</p>
<p><img src="http://yuiblog.com/assets/rte-link-editor.gif" alt="Editing links in the YUI RTE." width="520" height="445" /></p>
<p><strong>The Create Link Dialog</strong> &#8211; Say you want to use a different input utility for link creation (a pre-defined links list maybe?) instead of the default link editor. Well, here&rsquo;s some sample code to turn it into a JavaScript prompt:</p>
<pre>
var oEditor = new YAHOO.widget.Editor('demo');
oEditor._handleCreateLinkClick = function() {
    oEditor.on('afterExecCommand', function() {
        var str = prompt('URL: ', 'link');
        var el = this.currentElement[0].setAttribute('href', str);
    }, oEditor, this);
};
</pre>
<p>Using this technique, you could easily write your own property editor. By the way, the &lsquo;insert image&rsquo; dialog can be overridden in exactly the same way (for example to make it a photo picker), just override the <code>_handleInsertImageClick</code> method. You could either override it as above, or you could override all editor instances (so every editor on the page would behave the same) like this:</p>
<pre>
YAHOO.widget.Editor.prototype._handleCreateLinkClick = function() {
};</pre>
<h2>The Look and Feel</h2>
<p>If you don&rsquo;t like the visual design of the RTE, simply change the CSS. As with YUI&rsquo;s entire family of controls, the visual presentation of the control is written in CSS and <a href="http://developer.yahoo.com/yui/articles/skinning/">can be reskinned to suit your implementation</a>. See the RTE&rsquo;s <a href="http://developer.yahoo.com/yui/examples/editor/skinning_editor.html">skinning example</a> for more information on how CSS controls the presentation of the RTE specifically. We&rsquo;ve even provided the <a href="http://developer.yahoo.com/yui/editor/assets/rte-skinning.zip">Photoshop source file</a> for the icons to make it easier for you to create a design that&rsquo;s customized for your site. Maybe you like the colors, but you don&rsquo;t want to see the labels above the &lsquo;groups&rsquo;? Well, add these few lines of CSS:</p>
<pre>
.yui-skin-sam .yui-toolbar-container .yui-toolbar-group h3 {
	display: none;
}
.yui-skin-sam .yui-toolbar-container .yui-toolbar-group {
	margin-top: .75em;
}</pre>
<p>Once you dig in, I think you will find that the YUI RTE is pretty flexible and easy to extend.</p>
<h2>In the End</h2>
<p>Safari was tough, but I&rsquo;m stubborn. When Safari properly supports execCommand, things will be even better. YUI&rsquo;s RTE is exceptionally extensible and customizable; from very low-level functionality all the way up through the visual layer. It&rsquo;s also semi-lightweight, and will be even lighter before I&rsquo;m done with it.</p>
<p>I hope you enjoy my first YUI control. Please keep the feedback coming.</p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?a=9EbEFCtg"><img src="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?i=9EbEFCtg" border="0"/></a> <a href="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?a=kd1houJy"><img src="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?i=kd1houJy" border="0"/></a> <a href="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?a=7OVCbIZu"><img src="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?i=7OVCbIZu" border="0"/></a> <a href="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?a=yF2VCxYD"><img src="http://feeds.yuiblog.com/~f/YahooUserInterfaceBlog?i=yF2VCxYD" border="0"/></a>
</div>
<p>&#8221;</p>
<p>(Via <a href="http://yuiblog.com/blog">Yahoo! User Interface Blog</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2007/08/14/some-notes-on-the-yui-rich-text-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZK &#8211; #1 Ajax project on SourceForge.net</title>
		<link>http://blog.mehrwert.de/2007/08/08/zk-1-ajax-project-on-sourceforgenet/</link>
		<comments>http://blog.mehrwert.de/2007/08/08/zk-1-ajax-project-on-sourceforgenet/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 14:08:39 +0000</pubDate>
		<dc:creator>Andreas Beutel</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.mehrwert.intern/2007/08/08/zk-1-ajax-project-on-sourceforgenet/</guid>
		<description><![CDATA[ZK is an open-source Ajax Web framework that enables rich user interface for Web applications with little programming. http://www.zkoss.org/.]]></description>
			<content:encoded><![CDATA[<p>ZK is an open-source Ajax Web framework that enables rich user interface for Web applications with little programming. <a href="http://www.zkoss.org/">http://www.zkoss.org/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mehrwert.de/2007/08/08/zk-1-ajax-project-on-sourceforgenet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: blog.mehrwert.de @ 2012-02-08 03:49:40 by W3 Total Cache -->
