<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Matteo Bicocchi&#039;s Blog &#187; ajax</title>
	<atom:link href="http://pupunzi.open-lab.com/tag/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://pupunzi.open-lab.com</link>
	<description>mb.ideas.repository</description>
	<lastBuildDate>Sun, 12 Feb 2012 12:39:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='pupunzi.open-lab.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/f84717aa2c4a99c6f997904a49e41a68?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Matteo Bicocchi&#039;s Blog &#187; ajax</title>
		<link>http://pupunzi.open-lab.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://pupunzi.open-lab.com/osd.xml" title="Matteo Bicocchi&#039;s Blog" />
	<atom:link rel='hub' href='http://pupunzi.open-lab.com/?pushpress=hub'/>
		<item>
		<title>jQuery 1.5.2 ajax module and local files issue</title>
		<link>http://pupunzi.open-lab.com/2011/04/24/jquery-1-5-2-ajax-module-and-local-files-issue/</link>
		<comments>http://pupunzi.open-lab.com/2011/04/24/jquery-1-5-2-ajax-module-and-local-files-issue/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 19:45:20 +0000</pubDate>
		<dc:creator>Matteo Bicocchi</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[bugs]]></category>

		<guid isPermaLink="false">http://pupunzi.open-lab.com/?p=1893</guid>
		<description><![CDATA[In the new jQuery 1.5 version the ajax module has been completely rewritten introducing important changes. One of the most consistent change is that now the $.ajax() call returns a jXHR object that is a superset of the browser’s native XMLHttpRequest object. As an example the ajax response now contains  the responsetext as well as&#160;&#8230; <a href="http://pupunzi.open-lab.com/2011/04/24/jquery-1-5-2-ajax-module-and-local-files-issue/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pupunzi.open-lab.com&amp;blog=6146833&amp;post=1893&amp;subd=pupunzi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the new jQuery 1.5 version the ajax module has been completely rewritten introducing important changes.<br />
One of the most consistent change is that now the $.ajax() call returns a jXHR object that is a superset of the browser’s native XMLHttpRequest object.<br />
As an example the ajax response now contains  the responsetext as well as the getResponseHeader() method and provides consistency to the XMLHttpRequest object across platforms (and allows you to perform previously-impossible tasks like aborting JSONP requests).<br />
But something unexpected happens once I tested my components with this new jQuery version.<br />
All the ajax requests did&#8217;t work if run as local file (Ex: file:///Users/pupunzi/DEV/jquery.mb.components/jquery.mb.extruder/demo.html).<br />
That was something I pointed out during the beta testing of this latest release but once the official 1.5 was out the problem still exist.</p>
<p>Getting over again this problem I found out what was wrong: <strong>all my ajax requests did&#8217;t expressly declarate the dataType attribute when called</strong>; this, for some reason, have no default fallback (dataType:&#8221;html&#8221;) if the request is made from a local file using the v. 1.5 of jQuery but it is resolved correctly once called from a web server.</p>
<p>So, after adding the correct dataType, all the ajax calls now works correctly even if called directly from a local file:</p>
<p>before:</p>
<p><pre class="brush: jscript;">
$.ajax({
type: &quot;GET&quot;,
url: url,
data:pageData,
success: function(response) {...}
})
</pre></p>
<p>after:</p>
<p><pre class="brush: jscript;">
$.ajax({
type: &quot;GET&quot;,
url: url,
data:pageData,
dataType:&quot;html&quot;,
success: function(response) {...}
})
</pre></p>
<p>There&#8217;s no documentation about this issue on the jquery site and maybe someone will find this information usefull.<br />
For an accurate documentation on the new ajax module read: <a href="http://api.jquery.com/category/version/1.5/" target="_blank">http://api.jquery.com/category/version/1.5/</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pupunzi.wordpress.com/1893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pupunzi.wordpress.com/1893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pupunzi.wordpress.com/1893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pupunzi.wordpress.com/1893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pupunzi.wordpress.com/1893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pupunzi.wordpress.com/1893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pupunzi.wordpress.com/1893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pupunzi.wordpress.com/1893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pupunzi.wordpress.com/1893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pupunzi.wordpress.com/1893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pupunzi.wordpress.com/1893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pupunzi.wordpress.com/1893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pupunzi.wordpress.com/1893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pupunzi.wordpress.com/1893/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pupunzi.open-lab.com&amp;blog=6146833&amp;post=1893&amp;subd=pupunzi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pupunzi.open-lab.com/2011/04/24/jquery-1-5-2-ajax-module-and-local-files-issue/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>43.768732 11.256901</georss:point>
		<geo:lat>43.768732</geo:lat>
		<geo:long>11.256901</geo:long>
		<media:content url="http://0.gravatar.com/avatar/03604fe1ab8aedd7fd69ba097439593c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">pupunzi</media:title>
		</media:content>
	</item>
		<item>
		<title>jQuery (mb)Menu 2.7 (New!)</title>
		<link>http://pupunzi.open-lab.com/2009/01/18/mbmenu/</link>
		<comments>http://pupunzi.open-lab.com/2009/01/18/mbmenu/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 08:46:36 +0000</pubDate>
		<dc:creator>Matteo Bicocchi</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[(mb)menu]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[contextual menu]]></category>
		<category><![CDATA[jquery contextual menu]]></category>
		<category><![CDATA[jquery menu]]></category>
		<category><![CDATA[jquery multilevel menu]]></category>
		<category><![CDATA[jquery tree menu]]></category>
		<category><![CDATA[multilevel menu]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[tree menu]]></category>

		<guid isPermaLink="false">http://pupunzi.wordpress.com/?p=105</guid>
		<description><![CDATA[Go to the component page for the latest update: http://pupunzi.open-lab.com/mb-jquery-components/mb-_menu/ Now is This is a powerful jQuery component to build easily a multilevel tree menu or a contextual menu (right click) in an intuitive way! You can add as many submenus as you want; if your submenu or menu is not declared in the page,&#160;&#8230; <a href="http://pupunzi.open-lab.com/2009/01/18/mbmenu/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pupunzi.open-lab.com&amp;blog=6146833&amp;post=105&amp;subd=pupunzi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://pupunzi.wordpress.com/2009/01/18/mbmenu/"><img class="alignnone size-full wp-image-110" title="mbmenu" src="http://pupunzi.files.wordpress.com/2009/01/mbmenu.jpg?w=640" alt="mbmenu"   /><br />
<em> </em><br />
</a></p>
<h3>Go to the component page for the latest update:</h3>
<h3><a href="http://pupunzi.open-lab.com/mb-jquery-components/mb-_menu/">http://pupunzi.open-lab.com/mb-jquery-components/mb-_menu/</a></h3>
<p><span id="more-105"></span></p>
<p>Now is <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Transitional" width="88" height="31" /><a href="http://pupunzi.wordpress.com/2009/01/18/mbmenu/"></a></p>
<p>This is a powerful jQuery component to build easily a multilevel tree menu or a contextual menu (right click) in an intuitive way!</p>
<p>You can add as many submenus as you want; if your submenu or menu is not declared in the page, the component&#8217;ll get it via ajax calling the template page with the id of the menu you need (the value of  &#8220;menu&#8221; attribute) the ajax page should return a well formatted code as the example below for the menu voices code.</p>
<p><a href="http://pupunzi.open-lab.com/mb-jquery-components/mb-_menu/">go to the component page for the latest release</a></p>
<h3>Dependencies:</h3>
<p>optional:<strong> jquery.metadata.plugin</strong></p>
<p>optional:<strong> jquery.hoverIntent.plugin</strong></p>
<h3>here is the js call:</h3>
<p><code><br />
$(".myMenu").buildMenu(<br />
{<br />
template:"menuVoices.jsp",<br />
additionalData:"",<br />
menuWidth:200,<br />
openOnRight:false,<br />
menuSelector: ".menuContainer",<br />
iconPath:"ico/",<br />
hasImages:true,<br />
</code><code> fadeInTime:200,<br />
fadeOutTime:100,<br />
</code><code>adjustLeft:2,<br />
adjustTop:10,<br />
opacity:.95,<br />
shadow:true,</code><code><br />
closeOnMouseOut:true,</code><code><br />
closeAfter:500,<br />
minZindex:200,<br />
hoverIntent:0<br />
});</code></p>
<h3>or you can call it as contextual menu:</h3>
<p><span style="color:#808080;">(can&#8217;t work in opera due to a security restriction)</span></p>
<p><code> $(document).buildContextualMenu(<br />
{<br />
template:"menuVoices.html",<br />
menuWidth:200,<br />
overflow:2,<br />
menuSelector: ".menuContainer",<br />
iconPath:"ico/",<br />
hasImages:false,</code><code><br />
</code><code> fadeInTime:200,</code><br />
<code> fadeOutTime:100,</code><br />
<code> adjustLeft:0,<br />
adjustTop:0,<br />
opacity:.99,<br />
shadow:true,<br />
</code><code>onContextualMenu:function(o,e){}</code><br />
<code> });<br />
</code></p>
<h3>params:</h3>
<h4>template:</h4>
<p>is the ajax page that build this level menu structure ;<br />
<em>If the menu you are calling is not on the page, the component automatically will try to build it calling via Ajax the &#8220;template&#8221; page, passing the ID of the menu you call in the request (&#8220;menuId&#8221;).<br />
The temlate page should be a dinamic page (php, jsp, aspx, &#8230;) that&#8217;ll build the menu from the ID param </em>passed in the request.</p>
<p>If you are a beginner on javascript and coding in general just write your menu code directly on your page; it&#8217;s easyer!</p>
<h4>additionalData:</h4>
<p>are additional data needed to build the menu, by default it send the actual menuline id;<br />
<em>If you need some other params to be passed to the template page to build your menu you can set them here, writing them like: &#8220;pippo=1&amp;pluto=false&#8221;;</em></p>
<h4>openOnRight:</h4>
<p>let the menus open on the right side instead bottom;</p>
<h4>openOnClick:</h4>
<p>define if the menu is opened by a mouse click or by a mouseover event;</p>
<h4>hasImages:</h4>
<p>define if the menu voices have images or not on its left;</p>
<h4>menuSelector:</h4>
<p>is the css class applied to each menu container of this menu context;</p>
<h4><span style="color:#000000;">closeOnMouseOut</span>:</h4>
<p>the menu can be close either onclik on the window or just when your mouse exit the menu</p>
<h4><span style="color:#000000;">closeAfter</span>:</h4>
<p>the time to whait befor close the menu (works just if <em>closeOnMouseOut</em> is set to true)</p>
<h4>fadeInTime / fadeOutTime:</h4>
<p>those params control the speed of the opening and closing fade effect.</p>
<h4>hoverIntent:<span style="color:#ff6600;"> (New!)</span></h4>
<p>this param sets the delay for the hover event; if set to 0 the hoverIntent function is not used.<br />
To use this feature you have to include the  <a href="http://cherne.net/brian/resources/jquery.hoverIntent.html" target="_blank">jquery.hoverIntent plug in</a> in your page!</p>
<h4>submenuHoverIntent:<span style="color:#ff6600;"> (New!)</span></h4>
<p>this param sets the delay for the hover event on submenu calls; if set to 0 the hoverIntent function is not used.<br />
To use this feature you have to include the  <a href="http://cherne.net/brian/resources/jquery.hoverIntent.html" target="_blank">jquery.hoverIntent plug in</a> in your page!</p>
<h4><span style="color:#000000;">onContextualMenu</span>:</h4>
<p>A function invoked once each contextualMenu is called;<br />
<em>the function has either the dom element you clicked on, either the event</em>:<br />
<span style="color:#008000;"><em>onContextualMenu:function(o,e){<br />
testForContextMenu(o);<br />
},</em></span></p>
<h3>here is the code for each menu header:</h3>
<div class="codeblock"><code>&lt;!-- menu voices --&gt;&lt;div class="myMenu"&gt;&lt;table class="rootVoices" cellspacing='0' cellpadding='0' border='0'&gt;&lt;tr&gt;<br />
&lt;td menu="menu_12" &gt;ajax menu 1&lt;/td&gt;<br />
&lt;td menu="menu_2" &gt;menu 2&lt;/td&gt;<br />
&lt;td menu="menu_3" &gt;menu 3&lt;/td&gt;<br />
&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/div&gt;<br />
</code><br />
&lt;!&#8211; end menu voices &#8211;&gt;</div>
<h3>and for each submenu:</h3>
<div class="codeblock"><code>&lt;!-- example code --&gt;&lt;div id="menu_1" class="menu"&gt;&lt;a rel="title" &gt;title menu_1.1&lt;/a&gt; &lt;!-- menuvoice title--&gt;<br />
&lt;a href="../mb_carusel/carousel.html" target="_blank" img="image.gif" &gt;menu_1.1 (href)&lt;/a&gt; &lt;!-- menuvoice with href--&gt;<br />
&lt;a action="document.title=('menu_1.2')" &gt;menu_1.2&lt;/a&gt; &lt;!-- menuvoice with js action--&gt;<br />
&lt;a rel="separator"&gt;&lt;/a&gt; &lt;!-- menuvoice separator--&gt;<br />
&lt;a action="document.title=('menu_1.3')" disabled=true&gt;menu_1.3&lt;/a&gt; &lt;!-- menuvoice disabled--&gt;<br />
&lt;a action="document.title=('menu_1.4')" menu="menu_1" img="image.png"&gt;menu_1.4&lt;/a&gt;&lt;!-- menuvoice with js action, image and submenu--&gt;<br />
&lt;/div&gt;</code></div>
<h3>How to use it:</h3>
<h4>header</h4>
<p>The menu header shouldn&#8217;t necessarely be a table (also an unordered list or what else you want).<br />
to append a menu to each voice of the header you simply add an attribute &#8220;menu&#8221; to the tag with the ID of the menu you want as value; if the menu already exist in the page it get it otherwise it&#8217;ll be called via ajax at the url specified in the &#8220;template&#8221; attribute.</p>
<h4>each menu</h4>
<p>Each menu is a div with an ID that represent the content you want to call and a class &#8220;menu&#8221;; this div contains all the voices of the menu as &#8220;a&#8221; tag.<br />
Give a look at the code to understand all the possible definition of each voice line!</p>
<p><strong> </strong><a href="http://www.open-lab.com/mb.ideas/index.html#mbMenu" target="_blank"></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pupunzi.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pupunzi.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pupunzi.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pupunzi.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pupunzi.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pupunzi.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pupunzi.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pupunzi.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pupunzi.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pupunzi.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pupunzi.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pupunzi.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pupunzi.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pupunzi.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pupunzi.open-lab.com&amp;blog=6146833&amp;post=105&amp;subd=pupunzi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pupunzi.open-lab.com/2009/01/18/mbmenu/feed/</wfw:commentRss>
		<slash:comments>416</slash:comments>
		<georss:point>43.768732 11.256901</georss:point>
		<geo:lat>43.768732</geo:lat>
		<geo:long>11.256901</geo:long>
		<media:content url="http://0.gravatar.com/avatar/03604fe1ab8aedd7fd69ba097439593c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">pupunzi</media:title>
		</media:content>

		<media:content url="http://pupunzi.files.wordpress.com/2009/01/mbmenu.jpg" medium="image">
			<media:title type="html">mbmenu</media:title>
		</media:content>

		<media:content url="http://www.w3.org/Icons/valid-xhtml10" medium="image">
			<media:title type="html">Valid XHTML 1.0 Transitional</media:title>
		</media:content>
	</item>
		<item>
		<title>web 2.0 GUI &#8211; Graphic User Interface</title>
		<link>http://pupunzi.open-lab.com/2009/01/16/gui/</link>
		<comments>http://pupunzi.open-lab.com/2009/01/16/gui/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 23:10:34 +0000</pubDate>
		<dc:creator>Matteo Bicocchi</dc:creator>
				<category><![CDATA[graphic design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[graphic user interface]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[more than icons]]></category>
		<category><![CDATA[open lab]]></category>
		<category><![CDATA[teamwork]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://pupunzi.wordpress.com/?p=19</guid>
		<description><![CDATA[Uno dei core business di Open Lab è focalizzato sulla realizzazione di applicazioni web based (teamwork ne è un esempio). La parte di sviluppo delle interfacce GUI (Graphic User Interface) ha un ruolo fondamentale nel successo di qualsiasi applicazione, tantopiù se questa è fruibile attraverso un browser. Occupandomi di graphic design, questo aspetto mi affascina&#160;&#8230; <a href="http://pupunzi.open-lab.com/2009/01/16/gui/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pupunzi.open-lab.com&amp;blog=6146833&amp;post=19&amp;subd=pupunzi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-81" title="screenshot_00051" src="http://pupunzi.files.wordpress.com/2009/01/screenshot_00051.jpg?w=640" alt="screenshot_00051"   /></p>
<p>Uno dei <em>core business</em> di <a href="http://www.open-lab.com" target="_blank">Open Lab</a> è focalizzato sulla realizzazione di applicazioni <em>web based</em> (<a href="http://www.twproject.com" target="_blank">teamwork</a> ne è un esempio).</p>
<p>La parte di sviluppo delle interfacce GUI (<strong>Graphic User Interface</strong>) ha un ruolo fondamentale nel successo di qualsiasi applicazione, tantopiù se questa è fruibile attraverso un browser.<br />
Occupandomi di <em>graphic design,</em> questo aspetto mi affascina e mi interessa in maniera particolare (Open Lab ha un sito dedicato: <a href="http://www.morethanicons.com" target="_blank">More than Icons</a>).</p>
<p>Oggi è inpensabile scindere gli aspetti di interazione tra &#8220;chi utilizza&#8221; e &#8220;ciò che è utilizzato&#8221; (è anche questo un interessante tema di comunicazione); un designer non solo deve avere una cultura teorica sull&#8217;argomento (e già questo aspetto implica un attenzione ed una sensibilità rivolta al contemporaneo); ma deve conoscere gli strumenti che le tecnologie e le nuove tecnologie mettono a disposizione per la realizzazione di strumenti e metodi di fruizione delle interfacce.</p>
<p><span style="color:#808080;"><em>One of the core businesses of <a href="http://www.open-lab.com" target="_blank">Open Lab</a> is building web based applications (<a href="http://www.twproject.com" target="_blank">teamwork</a> is an example).<br />
Development of web based GUI (Graphic User Interface) today plays a key role in the success of any application, especially if it is available through a browser.  Graphic design fascinates me, particularly when combined with usability (see our web site: <a href="http://www.morethanicons.com" target="_blank">More than Icons</a>).<br />
Today it is unthinkable to separate aspects of interaction between &#8220;those who use&#8221; and &#8220;what is used”  (this is also an interesting theme of communication), a designer must not only have technological background  (and this already implies a sensitivity and attention devoted to the contemporary), but must also know the tools that new technologies provide for the creation of usable interfaces.</em></span></p>
<p><span id="more-19"></span>Per le applicazioni realizzate in ambiente web (quello che ora viene chiamato <strong>Web 2.0</strong>), che sempre più stanno assumendo un ruolo centrale nello sviluppo informatico, stiamo assistendo a sanguinose battaglie per l&#8217;affermazione degli standard comportamentali dei browser di fruizione; anche l&#8217;indiscusso protagonista IE (che fino ad oggi ha imposto in maniera arrogante i suoi standard proprietari, costringendo chi come me si occupa di programmazione di interfacce web a frustrazioni e sforzi disumani per far sì che le interfacce siano coerenti su tutti  i browsers) si stà allineando agli standard del <strong>W3C </strong>e <strong>ECMA</strong>, rendendo tutti un po&#8217; più felici.</p>
<p>Gli strumenti per realizzare interfacce in ambiente web, a prescindere dall&#8217;ambiente in cui l&#8217;applicazione è stata sviluppata <em>server side</em>, sono tendenzialmente 2: L&#8217;<a href="http://it.wikipedia.org/wiki/HTML" target="_self"><strong>HTML </strong>o<strong> XHTML</strong></a> (<strong>HyperText Markup Language</strong><strong></strong>) per la gestione della strutura dei contenuti ed il <strong><a href="http://it.wikipedia.org/wiki/Foglio_di_stile" target="_blank">CSS</a> </strong>(<strong>Cascading Style Sheet</strong>) per la loro visualizzazone. A questi si aggiunge l’<a href="http://it.wikipedia.org/wiki/JavaScript" target="_blank"><strong>ECMAscript</strong></a> (<strong>javascript</strong>) per la manipolazione del DOM (struttura della pagina) e dei suoi contenuti.</p>
<p>Ci sono inoltre elementi realizzati con <em>codice compilato </em>che possono essere inglobati nelle pagine e per i quali sono richiesti plug in <em>client side </em>per la loro fruizione; tra questi, il linguaggio più utilizzato è senza dubbio l’<strong><a href="http://it.wikipedia.org/wiki/ActionScript" target="_blank">actionScript</a> </strong>in ambiente <strong>Flash </strong>o <strong>Flex </strong>di <strong>Adobe</strong> ®.<br />
Inoltre, per la fruizione contestuale di oggetti multimediali quali filmati, audio, documenti pdf, oggetti 3D e quant&#8217;altro, ogni <em>softwarehouse </em>(Adobe®, Apple®, Microsoft®, etc.) ha implementato <em>plug in</em> proprietari per integrare la loro tecnologia all&#8217;interno del&#8217;ambiente web. Il maggior difetto di questi componenti è quello appunto di essere codice <em>compilato</em> e non <em>interpretato</em> per cui l&#8217;iterazione tra oggetti diversi su una stessa pagina non è esplicita e gli eveti non sono condivisi.</p>
<p>Il <strong>Web 2.0</strong> differisce dalla precedente gestione delle pagine web fondamentalmente per due aspetti:</p>
<ol>
<li>La manipolazione degli oggetti del DOM a seguito di eventi scatenati dall&#8217;utente <em>(mouse click, mouse hover, mouse out,  change, time events,  etc.).</em></li>
<li>La possibilità di modificare il contesto dei contenuti a seguito di richieste specifiche <em>server side</em>, senza dover ricaricare interamente il contenuto della pagina, tramite la tecnologia <a href="http://it.wikipedia.org/wiki/AJAX" target="_blank">Ajax</a> (<strong>Asynchronous JavaScript and XML</strong>).</li>
</ol>
<p>La tendenza generale è quindi quella di utilizzare quanto più possibile i linguaggi <em>interpretati</em> (javascript, HTML e CSS) per la realizzazione delle interfacce così da poter condividere gli eventi e modificarne i contenuti attraverso codice espresso direttamente sulla pagina o su files a questa collegati.</p>
<p>Tutto questo si scontra comunque con le diverse specificità dei browser utilizzati per fruire dei contenuti web (in realtà le specificità sono 2: IE da un lato, tutti gli altri dall&#8217;altro!!).<br />
Come già detto, a differenza di browser come <strong>Firefox </strong>(basato su motore<strong> Mozilla</strong>), <strong>Safari</strong> e l&#8217;ultimissimo nato <strong>Chrome </strong>(basati su motore <strong>webkit</strong>), <strong>Opera</strong> ed altri che hanno sposato l&#8217;idea di seguire <strong>standard comuni</strong> per l&#8217;interpretazione del codice e degli eventi scaturiti; rimane <strong>IE </strong>(Internet Explorer) di Microsoft®, che da solo ricopre poco meno del 50% dell&#8217;utenza e quindi non può essere tenuto di poco conto (anche se se lo meriterebbe!) che cerca di dettare standard proprietari (sia per l&#8217;interpretazione degli eventi, sia per gli aspetti grafici) in netto conflitto con gli altri (<a href="http://maxb.net/blog/2008/06/17/blacknwhite/">http://maxb.net/blog/2008/06/17/blacknwhite/</a>), facendo sì che il codice necessario alla realizzazione dell&#8217;interfaccia, sia visiva che comportamentale, debba essere sottoposto a costanti verifiche di funzionamento e <em>sporcato</em> per far sì che l&#8217;applicazione sia coerente su tutte le piattaforme di fruizione.</p>
<p>Per far fronte a questo inconveniente, almeno per l&#8217;aspetto comportamentale, sono nate delle <strong>API</strong> (Application Programming Interface) basate su javascript che permettono allo sviluppatore di scavalcare i problemi di compatibilità tra interpreti delegando ai propri metodi la verifica e la gestione delle differenze di codice necessario; hanno inoltre linearizzato i metodi di analisi del DOM e implementato metodi di gestione di eventi e metodi di gestione Ajax.</p>
<p>Questo ha facilitato talmente la programmazione da far sviluppare in poco tempo interfacce che fino a soli 2 o 3 anni fà sarebbero state irrealizzabili.</p>
<p>Le librerie più utilizzate oggi sono <a href="http://www.prototypejs.org/" target="_blank">Prototype</a>, <a href="http://www.mootools.net/" target="_blank">Mootools</a>, <a href="http://dojotoolkit.org" target="_blank">Dojo</a>, <a href="http://www.jquery.com" target="_blank">jQuery</a>; ognuna di queste ha dei buoni motivi per essere usata, comunque io ho sposato <strong>jQuery</strong> che ha, a mio parere, un approccio meno invasivo nella manipolazione del dom e degli eventi, una forte comunity che alimenta costantemente lo spettro di applicazioni, esempi e tutorials, ed è veramente <em>write less get more</em>.</p>
<p>Alcuni link utili di comparazione fra jQuery e le altre API:</p>
<ul>
<li><a href="http://ajaxian.com/archives/prototype-and-jquery-a-code-comparison" target="_blank">Prototype and jQuery: A code comparison</a></li>
<li><a href="http://jquery.com/blog/2006/08/20/why-jquerys-philosophy-is-better/" target="_blank">Why jQuery’s Philosophy is Better</a></li>
<li><a href="http://alternateidea.com/blog/articles/2006/08/23/jquery-mis-leading-the-pack" target="_blank">jQuery: (Mis)leading the Pack</a></li>
<li><a href="http://www.ja-sig.org/wiki/display/UP3/Javascript+Toolkit+Comparison" target="_blank">Javascript Toolkit Comparison</a></li>
<li><a href="http://jquery.com/blog/2006/10/18/zebra-table-showdown/" target="_blank">Zebra Table Showdown</a></li>
<li><a href="http://jquery.com/blog/2006/04/29/event-selector-showdown/" target="_blank">Event Selector Showdown</a></li>
</ul>
<p>Per concludere, la ricerca nell’ambito dell&#8217;usablità applicativa è in continua evoluzione ed offre grandi spazi creativi; pubblicherò in seguito alcuni componenti che ho realizzato per le nostre applicazioni.</p>
<p>Intanto, se volete, potete andare a vedere <a href="http://www.open-lab.com/mb.ideas/index.html" target="_blank">mb.ideas.repository</a>, un sito che ho realizzato per la pubblicazione dei miei compnenti javascript.</p>
<p>Per  informazioni sulla storia della Graphical User Interface dei sisemi operativi :</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/History_of_the_graphical_user_interface" target="_blank">http://en.wikipedia.org/wiki/History_of_the_graphical_user_interface</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pupunzi.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pupunzi.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pupunzi.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pupunzi.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pupunzi.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pupunzi.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pupunzi.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pupunzi.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pupunzi.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pupunzi.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pupunzi.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pupunzi.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pupunzi.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pupunzi.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pupunzi.open-lab.com&amp;blog=6146833&amp;post=19&amp;subd=pupunzi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pupunzi.open-lab.com/2009/01/16/gui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03604fe1ab8aedd7fd69ba097439593c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">pupunzi</media:title>
		</media:content>

		<media:content url="http://pupunzi.files.wordpress.com/2009/01/screenshot_00051.jpg" medium="image">
			<media:title type="html">screenshot_00051</media:title>
		</media:content>
	</item>
	</channel>
</rss>
