<?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>Hello World: &#187; Javascript</title>
	<atom:link href="http://razorblade.netsons.org/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://razorblade.netsons.org</link>
	<description>Programmazione web e oltre: php5, Zend Framework, jQuery, Actionscript 3.0, Sandy 3D Engine e altro</description>
	<lastBuildDate>Fri, 28 Aug 2009 18:23:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Introduzione a EXT JS Javascript Framework</title>
		<link>http://razorblade.netsons.org/2009/03/18/introduzione-a-ext-js-javascript-framework/</link>
		<comments>http://razorblade.netsons.org/2009/03/18/introduzione-a-ext-js-javascript-framework/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 01:21:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ext]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[extjs]]></category>
		<category><![CDATA[hello world]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=69</guid>
		<description><![CDATA[<h2>Ext: Non l'ennesima libreria javascript</h2>

<p>Oggi introdurremo la libreria EXT JS, un potente framework che da allo sviluppatore web la possibilità di creare interfacce avanzate con poche linee di codice. Queste interfaccie comprendono Feed Viewer, Gallerie di immagini, griglie o liste ( le grid ), tabs, finestre, layout, form, toolbars, menu, drag&#038;drop e molto altro. Ext nasce inizialmente come una estensione della Yahoo User Interface Library dalla quale col tempo si separa diventando un framework vero e proprio per di più open source.</p>

<p>Se per caso avete già 'adottato' un vostro framework e state per chiudere questa pagina, vi consiglio prima di dare un'occhiata a <a href="http://extjs.com/deploy/dev/examples/samples.html">questa pagina</a> per vedere subito di cosa è capace ExtJs, per giunta è anche possibile integrarlo con la vostra libreria preferita.<a href="http://razorblade.netsons.org/2009/03/18/introduzione-a-ext-js-javascript-framework">[...] Continua</a></p>


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Ext: Non l&#8217;ennesima libreria javascript</h2>
<p>Oggi introdurremo la libreria EXT JS, un potente framework che da allo sviluppatore web la possibilità di creare interfacce avanzate con poche linee di codice. Queste interfaccie comprendono Feed Viewer, Gallerie di immagini, griglie o liste ( le grid ), tabs, finestre, layout, form, toolbars, menu, drag&#038;drop e molto altro. Ext nasce inizialmente come una estensione della Yahoo User Interface Library dalla quale col tempo si separa diventando un framework vero e proprio per di più open source.</p>
<p>Se per caso avete già &#8216;adottato&#8217; un vostro framework e state per chiudere questa pagina, vi consiglio prima di dare un&#8217;occhiata a <a href="http://extjs.com/deploy/dev/examples/samples.html">questa pagina</a> per vedere subito di cosa è capace ExtJs, per giunta è anche possibile integrarlo con la vostra libreria preferita.</p>
<h2>Download di Ext Js</h2>
<p>Potete scaricare Ext da questa pagina <a href="http://extjs.com/products/extjs/download.php">http://extjs.com/products/extjs/download.php</a>, ad oggi la versione disponibile è la 2.2.1, cliccate quindi sul tasto &#8216;download&#8217; a fianco di &#8216;Ext JS 2.2.1 SDK&#8217;, un archivio che conterrà tutto ciò di cui avete bisogno per cominciare ( circa 6,6 Mb ).</p>
<h2>Installazione di Ext</h2>
<p>Una volta scaricato l&#8217;archivio, scompattatelo, ne otterrete diverse cartelle e files. I file di cui avrete bisogno per far funzionare il tutto sono ext-base.js, che contiene il motore della libreria, ext-all.js o in alternativa la sua versione non compressa, ext-all-debug.js, da utilizzarsi in ambiente di sviluppo. Inoltre avrete la necessità di includere nei vostri file html le directories resources e adapter, qui di seguito un breve esempio di un codice html funzionante per ext:</p>
<pre name="code" class="php">
&lt;html&gt;
&lt;head&gt;
   &lt;title&gt;ExtJs Hello World&lt;/title&gt;
   &lt;link rel="stylesheet" type="text/css" href="js/ext/resources/css/ext-all.css" /&gt;
   &lt;script src="js/ext/adapter/ext/ext-base.js"&gt;&lt;/script&gt;
   &lt;script src="js/ext/ext-all-debug.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Vediamo nel dettaglio i file inclusi:</p>
<ul class="listato">
<li>ext-all.css: il file CSS principale di Ext, contiene le regole dello stile per i widget di Ext. Questo file css NON va modificato, eventuali modifiche sono da inserirsi in un altro file, da inserire nel codice html in una riga seguente a questo. Per essere sicuri di sovrascrivere una certa regola css il consiglio è di utilizzare la parola chiave &#8216;important!&#8217; nel vostro css.</li>
<li>ext-base.js: come già detto è il motore di Ext. Risiede nella cartella adapters in quanto va sostituito con un altro nel caso volessimo utilizzare Ext insieme alla nostra libreria preferita, come per esempio jQuery</li>
<li>ext-all-debug.js/ext-all.js: tutti i widgets di Ext risiedono all&#8217;interno di questo file. La versione compressa da utilizzare in produzione pesa più di 530 kb!</li>
</ul>
<h2>Ext Hello World</h2>
<p>Vediamo un esempio veloce di utilizzo di Ext. Partendo dal codice html scritto in precedenza, aggiungetevi l&#8217;inclusione di un ulteriore file javascript, chiamatelo, per esempio, main.js</p>
<pre name="code" class="php">
&lt;html&gt;
&lt;head&gt;
   &lt;title&gt;ExtJs Hello World&lt;/title&gt;
   &lt;link rel="stylesheet" type="text/css" href="js/ext/resources/css/ext-all.css" /&gt;
   &lt;script src="js/ext/adapter/ext/ext-base.js"&gt;&lt;/script&gt;
   &lt;script src="js/ext/ext-all-debug.js"&gt;&lt;/script&gt;
   &lt;script src="js/main.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>All&#8217;interno di main.js inserite questo codice</p>
<pre name="code" class="php">
  Ext.onReady(function(){
    Ext.Msg.alert('Hello', 'World');
  });
</pre>
<p>Se tutto è andato per il verso giusto otterrete un simpatico alert. Come potete notare il codice javascript personalizzato, come avviene anche in jQuery, dev&#8217;essere inserito all&#8217;interno del metodo &#8216;ready&#8217;.</p>
<p>Per ora è tutto, questo tutorial voleva solo essere una introduzione veramente di base a questo utile framework. Nei prossimi articoli sull&#8217;argomento, vedremo come implementare Ext con altre librerie e qualche guida più avanzata ai widget più utili, come per esempio grid e form.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/03/18/introduzione-a-ext-js-javascript-framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Firebug per Firefox</title>
		<link>http://razorblade.netsons.org/2009/01/20/firebug-per-firefox/</link>
		<comments>http://razorblade.netsons.org/2009/01/20/firebug-per-firefox/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 09:04:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Applicazioni]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[DOM Inspector]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=66</guid>
		<description><![CDATA[<h2>L'estensione indispensabile per lo sviluppatore web</h2>

<p>Firebug è un plugin per Firefox sviluppato da <a href="http://www.joehewitt.com/software/firebug/">Joe Hewitt</a> che possiede alcune funzionalità a cui nessuno sviluppatore vorrebbe fare a meno.</p>

<p>Dopo aver <a href="http://www.joehewitt.com/software/firebug/">scaricato ed installato</a> l'estensione ed aver riavviato il browser, vedremo in basso a destra della finestra del browser l'incona di un insetto. Cliccandoci sopra si aprirà il pannello di controllo di Firebug.<a href="http://razorblade.netsons.org/2009/01/20/firebug-per-firefox">[...] Continua</a></p>


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>L&#8217;estensione indispensabile per lo sviluppatore web</h2>
<p>Firebug è un plugin per Firefox sviluppato da <a href="http://www.joehewitt.com/software/firebug/">Joe Hewitt</a> che possiede alcune funzionalità a cui nessuno sviluppatore vorrebbe fare a meno.</p>
<p>Dopo aver <a href="http://www.joehewitt.com/software/firebug/">scaricato ed installato</a> l&#8217;estensione ed aver riavviato il browser, vedremo in basso a destra della finestra del browser l&#8217;incona di un insetto. Cliccandoci sopra si aprirà il pannello di controllo di Firebug.</p>
<p><a href="http://razorblade.netsons.org/wp-content/firebug.jpg" class="images"><img alt="" src="http://razorblade.netsons.org/wp-content/firebug.jpg" title="cookie" style="width:600px;"/></a></p>
<h2>Attivare firebug</h2>
<p>Come potrete notare il plugin necessita di essere abilitato per iniziare a funzionare nel pieno delle sue caratteristiche, quindi dovrete inserire le spunte nei pannelli desiderati per attivarli.</p>
<h2>Caratteristiche</h2>
<p>Firebug offre davvero molte funzionalità interessanti. Quelle che personalmente preferisco ed utilizzo maggiormente sono la possibilità di effettuare il debug degli script javascript, caratteristica che fa risparmiare allo sviluppatore molto tempo e il DOM Inspector.</p>
<p>Sono inoltre importanti il pannello &#8216;Net&#8217;, dove possiamo visualizzare tutte le richieste che ha effettuato la pagina web, richieste tra le quali rientrano il download di immagini, di fogli di stile, javascript esterni e così via.</p>
<p>Sotto il pannello &#8216;Console&#8217; invece possiamo vedere le richieste asincrone che la pagina sta effettuando.</p>
<p>Una curisità, per quanto riguarda il pannello &#8216;Net&#8217;, è la possibilità di visualizzare, per quei siti che offrono il servizio di condivisione video, il percorso reale del file video e quindi <b>poterlo scaricare direttamente</b>.</p>
<p>Per quanto riguarda il DOM Inspector, dopo aver installato firebug, cliccando col tasto destro su un qualsiasi elemento della pagina web, noteremo nel menù la voce &#8216;Analizza Elemento&#8217;: cliccando su questa voce potremo visualizzare dove nel DOM ( Document Object Model ) è posizionato quell&#8217;elemento, le regole css ad esso applicato ed inoltre potremo effettuare delle modifiche in tempo reale, sia sul codice html che sul css.</p>
<h2>Conclusioni</h2>
<p>Una volta provato non potrete più fare a meno di Firebug. Le caratteristiche offerte da questa estensione sono a dir poco indispensabili per uno sviluppatore ma potrebbero tornare utili anche ad un &#8216;comune&#8217; utente. Sicuramente vi starete chiedendo &#8216;Ma gli altri browser&#8217;? La risposta è semplice, firebug NON esiste per altri browser fuorchè Firefox.</p>
<p>Tuttavia esistono plugin sia per Internet Explorer che per Opera che cercano di imitare le possibilità offerte da Firefox, magari li vedremo più avanti.</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/01/20/firebug-per-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menu a tendina multilivello crossbrowser con jQuery e Css</title>
		<link>http://razorblade.netsons.org/2008/10/04/menu-a-tendina-multilivello-crossbrowser-con-jquery-e-css/</link>
		<comments>http://razorblade.netsons.org/2008/10/04/menu-a-tendina-multilivello-crossbrowser-con-jquery-e-css/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 04:21:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cascade Style Sheet]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[drop down menu]]></category>
		<category><![CDATA[menu a tendina]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=40</guid>
		<description><![CDATA[<h2>Crossbrowser Multi Level Drop Down Menu Con jQuery e Css</h2>
<p>I menu a tendina sono molto utilizzati nelle applicazioni web, e molto spesso per crearli si ricorre a chilometri di codice javascript, scelta che potrebbe comportare diverse problematiche a livello di portabilità, accessibilità, efficienza ecc... Non è il caso del menù che andremo a vedere tra poco, interamente realizzato dal sottoscritto, creato quasi completamente utilizzando 'semplice' codice css con un pizzico di jQuery. Prima di buttarmi in questo lavoro ho effettuato diverse ricerche per vedere se ciò di cui avevo bisogno fosse già stato creato da qualcuno, ed in effetti, in molti hanno già creato cose abbastanza simili. Ciò che mi ha fatto decidere di creare qualcosa ex novo è stata <a href="http://razorblade.netsons.org/2008/10/04/menu-a-tendina-multilivello-crossbrowser-con-jquery-e-css/">[...] Continua</a></p>


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Crossbrowser Multi Level Drop Down Menu Con jQuery e Css</h2>
<p>I menu a tendina sono molto utilizzati nelle applicazioni web, e molto spesso per crearli si ricorre a chilometri di codice javascript, scelta che potrebbe comportare diverse problematiche a livello di portabilità, accessibilità, efficienza ecc&#8230; Non è il caso del menù che andremo a vedere tra poco, interamente realizzato dal sottoscritto, creato quasi completamente utilizzando &#8217;semplice&#8217; codice css con un pizzico di jQuery. Prima di buttarmi in questo lavoro ho effettuato diverse ricerche per vedere se ciò di cui avevo bisogno fosse già stato creato da qualcuno, ed in effetti, in molti hanno già creato cose abbastanza simili. Ciò che mi ha fatto decidere di creare qualcosa ex novo è stata la difficoltà di riadattare il codice altrui alle mie esigenze, e spero che con le spiegazioni che darò qui di seguito nessuno vada incontro alle medesime problematiche.</p>
<p>Ecco subito un <a href="http://razorblade.netsons.org/javascript/DropDownMenu/index.html">esempio</a> di cosa andremo ad ottenere e qui di seguito il codice:</p>
<p><b>index.html</b></p>
<pre name="code" class="php">
  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
  &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"&gt;
    &lt;head&gt;
      &lt;link rel="stylesheet" type="text/css" media="screen" href="./styles/style.css" /&gt;
      &lt;script type="text/javascript" src="./js/jquery.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="./js/menu.js"&gt;&lt;/script&gt;
      &lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
      &lt;title&gt;Drop Down Menu&lt;/title&gt;
    &lt;/head&gt;
  &lt;body&gt;

  &lt;div id="navigator"&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 1&lt;/a&gt;&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1&lt;/a&gt;&lt;/p&gt;
            &lt;ul&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1&lt;/a&gt;&lt;/p&gt;
                &lt;ul&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-2sssssss sssssssss ssssss&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4&lt;/a&gt;&lt;/p&gt;
                    &lt;ul&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                    &lt;/ul&gt;
                  &lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2&lt;/a&gt;&lt;/p&gt;
                &lt;ul&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-7&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 3&lt;/a&gt;&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
          &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-2&lt;/a&gt;&lt;/p&gt;
            &lt;ul&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-2-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-2-2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-2-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;

  &lt;/body&gt;
  &lt;/html&gt;
</pre>
<p><b>style/style.css</b></p>
<pre name="code" class="php">
	html, body, div, span, applet, object, iframe,
	h1, h2, h3, h4, h5, h6, p, blockquote, pre,
	a, abbr, acronym, address, big, cite, code,
	del, dfn, em, font, img, ins, kbd, q, s, samp,
	small, strike, strong, sub, sup, tt, var,
	b, u, i, center,
	dl, dt, dd, ol, ul, li,
	fieldset, form, label, legend,
	table, caption, tbody, tfoot, thead, tr, th, td {
		margin: 0;
		padding: 0;
		border: 0;
		outline: 0;
		font-size: 100%;
		vertical-align: baseline;
		background: transparent;
	}

	body {
		line-height: 1;
	}

	ol, ul {
		list-style: none;
	}

	blockquote, q {
		quotes: none;
	}

	blockquote:before, blockquote:after,
	q:before, q:after {
		content: '';
		content: none;
	}

	/* remember to define focus styles! */
	:focus {
		outline: 0;
	}

	/* remember to highlight inserts somehow! */
	ins {
		text-decoration: none;
	}

	del {
		text-decoration: line-through;
	}

	/* tables still need 'cellspacing="0"' in the markup */
	table {
		border-collapse: collapse;
		border-spacing: 0;
	}

	span {
		display: none;
	}

	#navigator {
		width: 990px;
		height: 21px;
		background-color: rgb(250,211,211);
	}

	#navigator ul {
		list-style-type:none;
		border: 0px solid #000000;
		position: absolute;
		z-index: 90;
	}

	#navigator ul li {
		width: 130px;
		float: left;
		border: 1px solid black;
		text-align: center;
		font-size: 11px;
		font-weight: bold;
		display: block;
	}

	#navigator ul li ul {
		display: none;
		visibility: hidden;
		width: 130px;
		border: 0px;
		border-left: 1px solid black;
		border-right: 1px solid black;
		background-color: #ffffff;
		margin: 1px 0px 0px -1px;
	}

	* html #navigator ul li ul {
		margin: 0px;
		background-color: #fff000;
		margin: 1px 0px 0px -66px;
	}

	#navigator ul li ul li {
		border: 0px solid black;
		border-bottom: 1px solid black;
		width: 130px;
	}

	#navigator ul ul ul {
		border: 0px solid black;
		border-top: 1px solid black;
		border-left: 1px solid black;
		border-right: 1px solid black;
		float: left;
		width: 130px;
		margin: -18px 0px 0px 130px;
		height: auto;
	}

	* html #navigator ul ul ul {
		margin: 0px;
		margin: -18px 0px 0px 65px;
	}

	#navigator ul li p {
		margin: 0px;
		padding: 3px 0px 3px 0px;
		color: #000000;
		width: 100%;
		height: 100%;
		background-color: #ff0000;
	}

	#navigator ul li p a {
		color: #000000;
		background-color: #00ff00;
	}
</pre>
<p><b>js/menu.js</b></p>
<pre name="code" class="php">

  $(document).ready(function(){
    $("#navigator li").hover(
      function(){
        $(this).children('ul:first:hidden').css({visibility: "visible",display:'block'});
      },
      function(){
        $(this).children('ul:first:visible').css({visibility: "hidden",display:'none'});
      }
    );
  });
</pre>
</p>
<p>Ricordatevi inoltre di includere correttamente la libreria jQuery.</p>
<p>Il file html non ha bisogno di spiegazioni, un semplice div che contiene un ul con degli li che a loro volta possono contenere altri ul ecc..</p>
<p>Il file menu.js utilizza il metodo <b>hover</b> di jQuery, che in pratica, mette in ascolto gli oggetti LI presenti all&#8217;interno del DIV#navigator con i metodi onmouseover e onmouseout.</p>
<p>Il file style.css è quello che andremo a dissezionare, vedendo passo passo i comportamenti che prende il nostro menu al variare del suo contenuto. Procederemo quindi in vari step che ci porteranno alla versione finale. Il codice in testa al file è parte del <a href="http://razorblade.netsons.org/2008/10/04/cascade-style-sheet-reset/">Meyerweb Reset</a> che personalmente includo in ogni progetto.</p>
<h2>Step 1</h2>
<p>Il primo passo è semplice&#8230; eliminate il contenuto che segue alla definizione degli attributi per il div#navigator, otterrete <a href="http://razorblade.netsons.org/javascript/DropDownMenu/step1.html">questo risultato</a>. Il contenuto degli ul li è subito visibile ed ogni elemento è a capo dell&#8217;altro. I file html e js sono rimasti invariati, infatti passando con il mouse sugli elementi LI potremo visualizzare/nascondere eventuali ul figli se disponibili.</p>
<h2>Step 2</h2>
<p>Non seguiremo l&#8217;ordine del codice come impostato nel file css nei vari step, infatti il file css di questo secondo passaggio sarà la versione dello step 1 con aggiunta delle definizioni di &#8216;#navigator ul li p&#8217; e &#8216;#navigator ul li p a&#8217;. <a href="http://razorblade.netsons.org/javascript/DropDownMenu/step2.html">Cliccate qui</a> per vedere il risultato e controllare se state eseguendo tutto correttamente. Abbiamo formattato i tag P ed A presenti all&#8217;interno degli LI. Perchè tag P? La versione fnale del menu senza la presenza dei tag P aveva un fastidioso difetto di <b>sovrapposizione degli UL</b>. Più nel dettaglio, la coordinata X dell&#8217;UL era uguale alla coordinata X del testo presente nell&#8217;LI parente sommata della sua lunghezza ( l&#8217;UL compariva subito dopo la fine del testo e non alla fine dell&#8217;LI, donando un effetto di disordine ).</p>
<h2>Step 3</h2>
<p>In questo passaggio le cose iniziano a prendere forma. Aggiungiamo le definizioni per &#8216;#navigator ul&#8217; e &#8216;#navigator ul li&#8217; ovvero l&#8217;UL che conterrà gli LI che rappresenteranno le <b>categorie</b>. Scrivo &#8216;rappresenteranno&#8217; in quanto adesso la definizione prende tutti gli UL e gli LI discendenti del div#navigator. Ciò che abbiamo ottenuto è che adesso, le sottocategorie compaiono al di sotto della categoria a cui appartengono. Questo <a href="http://razorblade.netsons.org/javascript/DropDownMenu/step3.html">step 3</a> sarà visualizzato in maniera abbastanza differente dai vari browser ( leggi: su IE6 viene interpretato in modo differente che dagli altri browser ). Da sottolineare la presenza dell&#8217;attributo <b>position: absolute;</b> che permette la visualizzazione degli UL come se fossero al di fuori di qualsiasi altro elemento ( modificare questa voce con relative o rimuoverla per capire di cosa sto parlando ). </p>
<h2>Step 4</h2>
<p>Aggiungiamo le definizioni di &#8216;#navigator ul li ul&#8217;, &#8216;#navigator ul li ul li&#8217; e &#8216;* html #navigator ul li ul&#8217;. In questo modo differenziamo la visualizzazione delle categorie di primo livello ( lo abbiamo fatto nello step 3 ) dalle sottocategorie ( a qualsiasi livello ). Inoltre definiamo che le sottocategorie di default NON debbano visualizzarsi. Della loro visualizzazione se ne occupera il file js ( che cerca il primo figlio UL nascosto dell&#8217;LI scatenante l&#8217;evento mouseover e lo visualizza ). <a href="http://razorblade.netsons.org/javascript/DropDownMenu/step4.html">Ciò che otteniamo</a> è la corretta visualizzazione delle categorie di primo livello. <b>Da notare che un selettore preceduto dal suffisso &#8216;* html&#8217; viene letto esclusivamente da IE6, quindi le proprietà al suo interno sono specifiche per far funzionare il tutto anche su questo browser</b>.</p>
<h2>Final Step</h2>
<p>Infine aggiungiamo le regole &#8216;#navigator ul ul ul&#8217; e &#8216;* html #navigator ul ul ul&#8217; che definiscono la visualizzazione per le categorie dal terzo livello in poi. Otteniamo quindi il <a href="http://razorblade.netsons.org/javascript/DropDownMenu/index.html">risultato finale</a>.</p>
<h2>Riadattare il tutto</h2>
<p>Ciò a cui bisogna porre attenzione modificando il css di questo menù sono principalmente la <b>larghezza degli li/ul</b> e la loro altezza, data principalmente dalla proprietà padding del tag P. Inoltre, la presenza del bordo di 1px è da tenere in considerazione in quanto la sua rimozione/modifica comporterebbe la modifica di altre proprietà per fare in modo che tutto si riadatti. Rispettando l&#8217;equilibrio tra le varie proprietà non dovrebbe essere eccessivamente un problema riadattare il tutto alle proprie esigenze.</p>
<p>Si conclude qui questo tutorial. Eventuali commenti per richieste o consigli su come modificare in meglio il codice sono sempre ben accetti.</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2008/10/04/menu-a-tendina-multilivello-crossbrowser-con-jquery-e-css/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introduzione a JQuery</title>
		<link>http://razorblade.netsons.org/2008/10/03/introduzione-a-jquery/</link>
		<comments>http://razorblade.netsons.org/2008/10/03/introduzione-a-jquery/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 05:50:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[John Resig]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=9</guid>
		<description><![CDATA[<h2>Il Framework jQuery</h2>
<p>JQuery è un framework javascript che semplifica, e anche di molto, il lavoro per tutti quelli che hanno a che fare con il suddetto linguaggio.  JQuery è inizialmente scritto da John Resig, a cui si sono unite altre persone creando un vero e proprio team. Diversi grandi nomi utilizzano questo framework nei loro siti internet, tra cui Google, Mozilla.org, Technorati ed altri che potete vedere sul sito di <a href="http://jquery.com/">JQuery</a>, dove tra l'altro, potete anche scaricarlo a scelta tra la versione compressa per produzione e non.</p>

<p>Ma cosa ci permette di fare questo framework?<a href="http://razorblade.netsons.org/2008/10/03/introduzione-a-jquery/">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/03/18/introduzione-a-ext-js-javascript-framework/' rel='bookmark' title='Permanent Link: Introduzione a EXT JS Javascript Framework'>Introduzione a EXT JS Javascript Framework</a> <small>Ext: Non l'ennesima libreria javascript Oggi introdurremo la libreria EXT...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Il Framework jQuery</h2>
<p>JQuery è un framework javascript che semplifica, e anche di molto, il lavoro per tutti quelli che hanno a che fare con il suddetto linguaggio.  JQuery è inizialmente scritto da John Resig, a cui si sono unite altre persone creando un vero e proprio team. Diversi grandi nomi utilizzano questo framework nei loro siti internet, tra cui Google, Mozilla.org, Technorati ed altri che potete vedere sul sito di <a href="http://jquery.com/">JQuery</a>, dove tra l&#8217;altro, potete anche scaricarlo a scelta tra la versione compressa per produzione e non.</p>
<p>Ma cosa ci permette di fare questo framework? Niente altro che tutto quello che ci permette di fare javascript, ma in maniera estremamente più semplice e veloce. Prima di scendere nel dettaglio con qualche codice di esempio, vediamo come inizializzare JQuery. Il mio consiglio è quello creare un file esterno ed includerlo nelle pagine subito dopo aver incluso il file principale della libreria:</p>
<p>prova.html</p>
<pre name="code" class="php">
  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
  &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"&gt;
    &lt;head&gt;
      &lt;link rel="stylesheet" type="text/css" media="screen" href="./styles/style.css" /&gt;
      &lt;script type="text/javascript" src="./js/jquery.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="./js/myJQueryStuff.js"&gt;&lt;/script&gt;
      &lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
      &lt;title&gt;JQuery Test Application&lt;/title&gt;
    &lt;/head&gt;
  &lt;body&gt;
  [...]
</pre>
<p>myJQueryStuff.js</p>
<pre name="code" class="php">
$(document).ready(function(){

// codice javascript/jquery

});
</pre>
<p>Tutto qui. Da questo momento in poi potrete usufruire di tutte le caratteristiche della libreria, come per esempio:</p>
<h2>Selettori</h2>
<p>Tramite la chiamata della funzione $, è possibile selezionare praticamente qualsiasi oggetto html in qualsiasi maniera si voglia. La sintassi dei selettori è molto simile ai selettori css, quindi per esempio, se volessimo selezionare il &lt;div id=&#8221;container&#8221;&gt; del nostro documento html, il codice sarebbe:</p>
<p>Selezione del div #container</p>
<pre name="code" class="php">
 var container = $('#container');
</pre>
<p>Alla stessa maniera è quindi possibile selezionare uno o più oggetti per classe, tagName, per via gerarchica utilizzando il simbolo &gt;</p>
<p>Selezione degli ul &#8216;figli&#8217; del div #container</p>
<pre name="code" class="php">
 var container = $('#container > ul');
</pre>
<p>e molti altri ancora. Esistono inoltre una grande quantità di filtri, raggruppati per filtri base, filtri di contenuto, visibilità, attributo, per i figli, per i forms ecc.. potete trovare tutto spiegato in maniera dettagliata con la spiegazione dei vari valori ritornati <a href="http://docs.jquery.com/Selectors">cliccando qui</a>.</p>
<h2>Ajax</h2>
<p>JQuery semplifica radicalmente la creazione delle richieste asincrone. Non dovremo più preoccuparci delle problematiche crossbrowser di creazione dell&#8217;oggetto XMLHttpRequest, JQuery ci pensa per noi, di seguito un esempio dello script da utilizzare:</p>
<p>richiesta Ajax con JQuery</p>
<pre name="code" class="php">
      $.ajax({
        url: './myServerScript.php',
        type: 'GET',
        data: 'myVar='+myVar,
        success:  function(html){
        }
      });
</pre>
<p>Questo è solo un esempio di come poter effettuare una richiesta di tipo GET al file myServerScript.php. Eventuali dati ritornti dalla richiesta saranno contenuti nella variabile html. Sono inoltre disponibili le chiamate POST e JSON. E&#8217; possibile inoltre specificare diverse altre proprietà per efttuare la chiamata ajax, per approfondimenti vi rimando a <a href="http://docs.jquery.com/Ajax">questo link</a>.</p>
<h2>Eventi</h2>
<p>Molto intuitiva anche la gestione degli eventi, con cui è possibile aggiungere o rimuovere un oggetto dall&#8217;ascolto di un determinato evento. Esiste inoltre la possibilità di scatenare un certo evento mediante il metodo trigger. Di seguito un esempio che mette in ascolto un elemento all&#8217;evento click:</p>
<p>esempio evento click</p>
<pre name="code" class="php">
  $('myButton').bind('click',function(){
    alert('hai cliccato myButton!');
  });
</pre>
<p>Per tutti i dettagli sulla gestione degli eventi <a href="http://docs.jquery.com/Events">cliccate qui</a>.</p>
<h2>Effetti</h2>
<p>Ovviamente non poteva mancare una gestione degli effetti, come animazioni, comparsa/scomparsa, slide ecc.. Ecco un esempio:</p>
<p>Effetto slide su un div</p>
<pre name="code" class="php">
    $("button").click(function () {
      $("div.slide").slideToggle("slow");
    });
</pre>
<p>Potete trovare tutta la documentazione con esempi pronti <a href="http://docs.jquery.com/Effects">qui</a>.</p>
<p>Su jQuery c&#8217;è moltissimo da scrivere, questo tutorial aveva il semplice scopo di introdurre le funzionalità base del framework, ritorneremo presto sull&#8217;argomento con interessanti script pronti all&#8217;uso. Nel mentre, ecco alcuni link estremamente interessanti di alcuni utilissimi plugin che estendono le già non poche funzionalità:</p>
<ul class='listato'>
<li><a href="http://malsup.com/jquery/">http://malsup.com/jquery/</a></li>
<li><a href="http://leandrovieira.com/projects/jquery/lightbox/">http://leandrovieira.com/projects/jquery/lightbox/</a></li>
<li><a href="http://www.fyneworks.com/jquery/multiple-file-upload/">http://www.fyneworks.com/jquery/multiple-file-upload/</a></li>
<li><a href="http://jamal-mvc.com/browser/code/trunk/build/demo/js/plugins/jquery.timers.js?rev=55">http://jamal-mvc.com/browser/code/trunk/build/demo/js/plugins/jquery.timers.js?rev=55</a></li>
</ul>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/03/18/introduzione-a-ext-js-javascript-framework/' rel='bookmark' title='Permanent Link: Introduzione a EXT JS Javascript Framework'>Introduzione a EXT JS Javascript Framework</a> <small>Ext: Non l'ennesima libreria javascript Oggi introdurremo la libreria EXT...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2008/10/03/introduzione-a-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
