<?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>Blogbonzo: Matteo Magni &#187; Javascript</title>
	<atom:link href="http://blog.ilbonzo.org/category/programmazione/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ilbonzo.org</link>
	<description>Just Another Geek!</description>
	<lastBuildDate>Thu, 02 Feb 2012 00:04:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Bug di IE con le gif animate</title>
		<link>http://blog.ilbonzo.org/2009/09/01/ie-e-gif-animate/</link>
		<comments>http://blog.ilbonzo.org/2009/09/01/ie-e-gif-animate/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 06:02:56 +0000</pubDate>
		<dc:creator>Matteo Magni</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://blog.ilbonzo.org/?p=322</guid>
		<description><![CDATA[Purtroppo su IE ogni volta che inviamo un form le gif animate vengono fermate. Ecco uno scenario tipico per questo errore: una form per inviare una foto dove si vuole fare attendere l&#8217;utente che finisca l&#8217;upload dandogli la sensazione, tramite una gif animata, che la pagina web stia lavorando. &#60;form onSubmit="gif()" name="myform" action="#" method="post" enctype="multipart/form-data"&#62; [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Purtroppo su IE ogni volta che inviamo un form le gif animate vengono fermate.</p>
<p>Ecco uno scenario tipico per questo errore: una form per inviare una foto dove si vuole fare attendere l&#8217;utente che finisca l&#8217;upload dandogli la sensazione, tramite una gif animata, che la pagina web stia lavorando.<br />
<code><br />
&lt;form onSubmit="gif()" name="myform" action="#" method="post" enctype="multipart/form-data"&gt;<br />
&lt;p id="wait"&gt;<br />
&lt;img id="WaitImage" src="images/loadingAnimation.gif"/&gt;&lt;br /&gt;<br />
&lt;strong&gt;&Egrave; in corso l'invio ...&lt;br /&gt;<br />
L'operazione potrebbe richiedere qualche minuto, attendi senza chiudere questa finestra.<br />
&lt;/strong&gt;<br />
&lt;/p&gt;<br />
&lt;/form&gt;<br />
</code></p>
<p>Visto che su IE la gif che era nascosta, quando invio la form smette di essere animata, bisogna trovare un modo per farla ripartire.</p>
<p>Tutto si può fare dando l&#8217;impressione ad IE di aver modificato l&#8217;immagine con Javascript un tempo successivo all&#8217;invio della form, tramite questa istruzione:<br />
<code><br />
setTimeout('document.getElementById("WaitImage").src = "images/loadingAnimation.gif"', 200);<br />
</code></p>
<p><code><br />
&lt;script type="text/javascript"&gt;<br />
function gif()<br />
{<br />
	if (document.forms["myform"]["file"].value != "")<br />
	{<br />
	  		document.getElementById(\'bottone_carica\').style.display = \'none\';<br />
	  		document.getElementById(\'wait\').style.display = \'block\';<br />
	  		setTimeout(\'document.getElementById("WaitImage").src = "images/loadingAnimation.gif"\', 200);<br />
	}<br />
}<br />
&lt;/script&gt;<br />
</code></p>
<p>Così la gif bloccata ripartirà a eseguire la sua animazione.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ilbonzo.org/2009/09/01/ie-e-gif-animate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slimbox wordpress plugin</title>
		<link>http://blog.ilbonzo.org/2008/01/17/slimbox-wordpress-plugin/</link>
		<comments>http://blog.ilbonzo.org/2008/01/17/slimbox-wordpress-plugin/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 08:48:00 +0000</pubDate>
		<dc:creator>Matteo Magni</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.ilbonzo.org/2008/01/17/slimbox-wordpress-plugin/</guid>
		<description><![CDATA[Come ho già avuto occasione di dire, mi piacciono molto le finestre modali per la visualizzazione delle immagini e dove potevo le ho sempre inserite. Fino ad ora ho utilizzato in particolare lightbox, ma ovviamente ho testato anche altre soluzioni. Ultimamente però ho preso la decisione di utilizzare principalmente mootools come framework javascript quindi, visto [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Come ho già avuto occasione di dire, mi piacciono molto le finestre modali per la visualizzazione delle immagini e dove potevo le ho sempre inserite.<br />
Fino ad ora ho utilizzato in particolare <a href="http://www.huddletogether.com/projects/lightbox2/" class="Tips3" title="huddletogether.com lightbox2">lightbox</a>, ma ovviamente ho testato anche altre soluzioni. Ultimamente però ho preso la decisione di utilizzare principalmente <a href="http://mootools.net/" class="Tips3" title="framework javascipt mootools">mootools</a> come framework javascript quindi, visto che è più funzionale caricare solo una libreria per non appesantire troppo i client, ho deciso di sostituire lightbox con <a href="http://www.digitalia.be/software/slimbox" class="Tips3" title="Finestra modale con slimbox">slimbox</a> utilizzando il plugin relativo anche sul blog:</p>
<p><a href="http://www.4mj.it/slimbox-wordpress-plugin/">slimbox wordpress plugin/</a></p>
<p>Eccone alcuni esempi con immagini che già sono state usate nel mio blog.</p>
<p><a href='http://blog.ilbonzo.org/wp-content/uploads/2008/01/06_ruby.png' title='ruby 06' rel="lightbox"><img src='http://blog.ilbonzo.org/wp-content/uploads/2008/01/06_ruby.thumbnail.png' alt='ruby 06' /></a></p>
<p>Sequenza</p>
<p><a href='http://blog.ilbonzo.org/wp-content/uploads/2007/05/g_evolution.png' title='tab ricezione mail' rel="lightbox[roadtrip]"><img src='http://blog.ilbonzo.org/wp-content/uploads/2007/05/g_evolution.png' alt='tab ricezione mail' width="200" height="150"/></a> <a href='http://blog.ilbonzo.org/wp-content/uploads/2007/05/g_evolution.png' title='tab ricezione mail' rel="lightbox[roadtrip]"><img src='http://blog.ilbonzo.org/wp-content/uploads/2007/05/g_evolution.png' alt='tab ricezione mail' width="200" height="150"/></a></p>
<p>il codice è questo:</p>
<p><code>Single example:<br />
&lt;a href=”img1.jpg” rel=”lightbox” title=”my caption”&gt;thumbnail1&lt;/a&gt;<br />
Image set example:<br />
&lt;a href=”img1.jpg” rel=”lightbox[roadtrip]”&gt;thumbnail1&lt;/a&gt;<br />
&lt;a href=”img2.jpg” rel=”lightbox[roadtrip]”&gt;thumbnail2&lt;/a&gt;<br />
&lt;a href=”img3.jpg” rel=”lightbox[roadtrip]”&gt;thumbnail3&lt;/a&gt;</code></p>
<p>Ogni volta che si inserisce una immagine bisogna aggiungere l&#8217;attributo rel, lightbox se è solo una immagine o lightbox[roadtrip] se si vuole creare una sequenza.</p>
<p>Gabba Gabba Hey<br />
Bonzo</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ilbonzo.org/2008/01/17/slimbox-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Json e Ajax accoppiata vincente</title>
		<link>http://blog.ilbonzo.org/2007/07/17/json-e-ajax-accoppiata-vincente/</link>
		<comments>http://blog.ilbonzo.org/2007/07/17/json-e-ajax-accoppiata-vincente/#comments</comments>
		<pubDate>Mon, 16 Jul 2007 22:11:19 +0000</pubDate>
		<dc:creator>Matteo Magni</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://blog.ilbonzo.org/?p=101</guid>
		<description><![CDATA[Json è un formato di testo indipendente dal linguaggio che usa convenzioni simili a quelle della famiglia dei linguaggi C. Si basa su due strutture di dati supportate praticamente da tutti i linguaggi di programmazione moderni: • una raccolta di coppie nome/valore [oggetti, record, dizionari...] • una raccolta ordinata di valori [array...] Inoltre Json è [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.json.org">Json</a>  è un formato di testo indipendente dal linguaggio che usa convenzioni simili a quelle della famiglia dei linguaggi C.</p>
<p>Si basa su due strutture di dati supportate praticamente da tutti i linguaggi di programmazione moderni:</p>
<p>• una raccolta di coppie nome/valore [oggetti, record, dizionari...]<br />
• una raccolta ordinata di valori [array...]</p>
<p>Inoltre Json è basato su un sottoinsieme di Javascript Standard, quindi non ci dovrebbero essere problemi di compatibilità con i vari browser.</p>
<p><strong><br />
Oggetto json</strong><br />
insieme ordinato di coppie nome/valore. inizia  e termina con una parentesi graffa{};<br />
<strong><br />
Array Json</strong><br />
raccolta ordinata di valori che inizia e termina con le parentesi quadre [];<br />
<strong><br />
Valore Json</strong><br />
Vengono separati da una virgola e possono essere: Stringa, numero, true e false, oggetto, array, null</p>
<p>In particolare il vanto di Json è di essere un formato di scambio molto più leggero di xml.<br />
<strong><br />
<em>Esempio di utilizzo Json<br />
</em></strong></p>
<p>File Json<a href="http://blog.ilbonzo.org/upload/ajax/json.js"><br />
json.js</a></p>
<p>File html con i form da cui far partire il nostro esempio<br />
<a href="http://blog.ilbonzo.org/upload/ajax/json_first.html"><br />
json_first.html</a></p>
<p><code>function doJSON() {<br />
    var user = getUserObject();<br />
    var userAsJSON = JSON.stringify(user);<br />
    alert("ecco l'oggetto User di Json :\n " + userAsJSON);<br />
    var url = "json_first.php?timeStamp=" + new Date().getTime();<br />
    var postVar= 'user_data='+encodeURIComponent(userAsJSON);<br />
    createXMLHttpRequest();<br />
    xmlHttp.open("POST", url, true);<br />
    xmlHttp.onreadystatechange = handleStateChange;<br />
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");<br />
    xmlHttp.send(postVar);<br />
}</code><br />
La funzione crea un oggetto User con i valori della form,<br />
<code><br />
function getUserObject() {<br />
    return new User(document.dati.username.value, document.dati.mail.value);<br />
}<br />
function User(username, mail) {<br />
    this.username = username;<br />
    this.mail = mail;<br />
}</code></p>
<p>e lo invia via Post in formato Json al server sotto forma d querystring:</p>
<p>Ecco il post della pagina:</p>
<p>user_data	{&#8220;username&#8221;:&#8221;bonzo&#8221;,&#8221;mail&#8221;:&#8221;ilbonzo.org@gmail.com&#8221;}</p>
<p>La pagina php processa i dati e li rimanda alla prima pagina</p>
<p>json_first.php</p>
<p><code>$jsonString= stripslashes($_POST['user_data']);<br />
var_dump(json_decode($jsonString));<br />
$jsonPost=json_decode($jsonString);<br />
echo 'username: ';<br />
echo $jsonPost->username;<br />
echo ' mail: ';<br />
echo $jsonPost->mail;</code></p>
<p>L&#8217;esempio è molto semplice, ma serve solo per capire le potenzialità di Json e Ajax.<br />
<a href="http://blog.ilbonzo.org/upload/ajax/json.zip">Scarica esempio</a></p>
<p><em>Nota:<br />
</em>Json su PHP si può usare dalla versione 5.2, prima serviva il repository PECL.</p>
<p>Gabba Gabba Hey</p>
<p>Bonzo</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ilbonzo.org/2007/07/17/json-e-ajax-accoppiata-vincente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax, comunicare con il server</title>
		<link>http://blog.ilbonzo.org/2007/06/19/ajax-comunicare-con-il-server/</link>
		<comments>http://blog.ilbonzo.org/2007/06/19/ajax-comunicare-con-il-server/#comments</comments>
		<pubDate>Tue, 19 Jun 2007 07:47:29 +0000</pubDate>
		<dc:creator>Matteo Magni</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://blog.ilbonzo.org/?p=89</guid>
		<description><![CDATA[Continuo il mio viaggio nello studio di Ajax. Oggi ho guardato come comunicare con il server, via GET o POST, ottenendo il risultato senza dover ricaricare la pagina dando all&#8217;applicazione un forte effetto web 2.0. L&#8217;esempio è fatto di una pagina getpost.html nella quale c&#8217;è un form in cui inserire il nome ed il cognome. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Continuo il mio viaggio nello studio di Ajax.<br />
Oggi ho guardato come comunicare con il server, via GET o POST, ottenendo il risultato senza dover ricaricare la pagina dando all&#8217;applicazione un forte effetto web 2.0.</p>
<p>L&#8217;esempio è fatto di una pagina <a href="http://blog.ilbonzo.org/upload/ajax/getpost.html">getpost.html</a> nella quale c&#8217;è un form in cui inserire il nome ed il cognome. Dopo di ciò facendo click su invia i parametri con GET si vedrà il risultato della pagina get.php nella parte Risposta Server senza avere un ricaricamento della pagina.La stessa cosa si ottiene con Invia i parametri via POST, con la differenza che questa volta il colloquio con il server avverrà via POST.</p>
<p>Vediamo un attimo il codice Javascript:</p>
<p>Il bottone GET chiama la funzione <em>doRequestUsingGET()</em>;<br />
<code><br />
function doRequestUsingGET()<br />
{<br />
    createXMLHttpRequest();<br />
    var queryString = "get.php?";<br />
    queryString = queryString + createQueryString()<br />
        + "&#038;timeStamp=" + new Date().getTime();<br />
    xmlHttp.onreadystatechange = handleStateChange;<br />
    xmlHttp.open("GET", queryString, true);<br />
    xmlHttp.send(null);<br />
}<br />
</code></p>
<p>La funzione crea un oggetto XMLHttpRequest, poi costruisce la stringa della Chiamata GET con i valori inseriti dall&#8217;utente utilizzando la funzione <em>createQueryString()</em>:</p>
<p><code><br />
function createQueryString()<br />
{<br />
    var nome = document.getElementById("nome").value;<br />
    var cognome = document.getElementById("cognome").value;<br />
    var queryString = "nome=" + nome + "&#038;cognome=" + cognome;<br />
    return queryString;<br />
}<br />
</code></p>
<p>Si continua impostando la proprietà <em>onreadystatechange</em> dell&#8217;oggetto XMLHttpRequest per l&#8217;uo della funzione <em>handleStateChange</em>. il metodo <em>open()</em> dice che la richiestà è di tipo GET, l&#8217;URL della richiesta con i valori e il metodo <em>send()</em> invia la richiesta al server. La risposta sarà gestita dalla funzione <em>handleStateChange</em>:</p>
<p><code><br />
function handleStateChange()<br />
{<br />
    if(xmlHttp.readyState == 4)<br />
{<br />
        if(xmlHttp.status == 200)<br />
{<br />
            parseResults();<br />
        }<br />
    }<br />
}<br />
</code></p>
<p>Quest&#8217;ultima chiama la funzione <em>parseResult()</em>:</p>
<p><code>function parseResults()<br />
{<br />
    var responseDiv = document.getElementById("rispostaServer");<br />
    if(responseDiv.hasChildNodes())<br />
{<br />
        responseDiv.removeChild(responseDiv.childNodes[0]);<br />
    }<br />
    var responseText = document.createTextNode(xmlHttp.responseText);<br />
    responseDiv.appendChild(responseText);<br />
}</code></p>
<p>Tale funzione usando il DOM rimuove i risultati precedenti del server dal DIV &#8220;rispostaServer&#8221; e ci va a mettere quelli nuovi.</p>
<p>Se invece si effettua tutto via POST, la differenza sta nella modalità in cui si inviano i parametri al server.</p>
<p><code><br />
function doRequestUsingPOST()<br />
{<br />
    createXMLHttpRequest();<br />
    var url = "post.php";<br />
    var queryString = createQueryString();<br />
    xmlHttp.open("POST", url, true);<br />
    xmlHttp.onreadystatechange = handleStateChange;<br />
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");<br />
    xmlHttp.send(queryString);<br />
}<br />
</code><br />
La differenza è che i parametri andranno cercati all&#8217;interno del corpo della richiesta e non nell&#8217;url.<br />
Per questo si usa il metodo <em>setRequestHeader()</em>, per dire al server che cerchi li i parametri.</p>
<p>Per completezza metto pure il codice delle pagine PHP:</p>
<p><em>get.php<br />
</em><br />
<code><br />
echo 'Ciao';<br />
echo ' Il tuo nome è: '.$_GET['nome'];<br />
echo ', il tuo cognome è: '.$_GET['cognome'];<br />
echo ' [Metodo GET]';<br />
</code></p>
<p><em>post.php</em><br />
<code><br />
echo 'Ciao';<br />
echo ' Il tuo nome è: '.$_POST['nome'];<br />
echo ', il tuo cognome è: '.$_POST['cognome'];<br />
echo ' [Metodo POST]';<br />
</code></p>
<p>L&#8217;esempio è molto semplice, ma si può fare la stessa cosa, avendo un parte lato serve molto più complicata, il tutto mantenedo questo aspetto di applicazione Desktop per una applicazione Web.</p>
<p><a href="http://blog.ilbonzo.org/upload/ajax/getpost.zip"><em>codice completo</em></a></p>
<p>Gabba Gabba Hey<br />
Bonzo</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ilbonzo.org/2007/06/19/ajax-comunicare-con-il-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oggetto XMLHttpRequest</title>
		<link>http://blog.ilbonzo.org/2007/06/16/oggetto-xmlhttprequest/</link>
		<comments>http://blog.ilbonzo.org/2007/06/16/oggetto-xmlhttprequest/#comments</comments>
		<pubDate>Sat, 16 Jun 2007 20:33:10 +0000</pubDate>
		<dc:creator>Matteo Magni</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://blog.ilbonzo.org/?p=62</guid>
		<description><![CDATA[XMLHttpRequest è l&#8217;oggetto che forse ha permesso a sistemi come Google Suggest e Ta-da-List di esistere nella maniera in cui li conosciamo attualmente. Inizialmente implementato da IE 5 come componente ActiveX, La maggior parte degli sviluppatori non usava XMLHttpRequest perché funzionava solo in Iternet Explorer fino a che, recentemente, non è stato adottato come standard [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>XMLHttpRequest è l&#8217;oggetto che forse ha permesso a sistemi come Google Suggest e Ta-da-List di esistere nella maniera in cui li conosciamo attualmente.</p>
<p>Inizialmente implementato da IE 5 come componente ActiveX, La maggior parte degli sviluppatori non usava XMLHttpRequest perché funzionava solo in Iternet Explorer fino a che, recentemente, non è stato adottato come standard in Mozilla 1.0 e Safari 1.2. Per ora però non è standard W3c, però la maggior parte dei browser implementano il funzionamento degli oggetti XMLHttpRequest in modo molto simile.</p>
<p>Esempio:<br />
<a href='http://blog.ilbonzo.org/upload/ajax/provarequest.html' title='provarequest.html'>provarequest.html</a><br />
<a href='http://blog.ilbonzo.org/wp-content/uploads/2007/06/th_01.png' title='xmlhttprequest_1'><img src='http://blog.ilbonzo.org/wp-content/uploads/2007/06/th_01.miniatura.png' alt='xmlhttprequest_1' /></a></p>
<p>C&#8217;è una form con un solo bottone su quale faccio click per far partire la richiesta di</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ilbonzo.org/2007/06/16/oggetto-xmlhttprequest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

