SlideShare une entreprise Scribd logo
1  sur  44
I linguaggi del Web – 2ª Ed. (3° Giorno)

 Diego La Monica – Web Solution Developer
 Email:       me@diegolamonica.info
 Web:         http://diegolamonica.info
 Twitter:     http://twitter.com/jast/
 Slide Share: http://slideshare.net/diego.la.monica/
 Skype:       diego.la.monica
 Mobile:      +39 333 7235382
Chi sono?
●   Web solution developer
●   Membro di IWA/HWG
●   Membro del Consiglio Direttivo di IWA Italy da Febbraio 2009




                                                                     2
●   Membro del Gruppo di Lavoro Protocols & Format istituito dal W3C per
conto di IWA/HWG
●   Autore del tool “Wi.Li.” http://wili.diegolamonica.info
●   Autore del framework JavaScript “JAST” http://jastegg.it
●   Autore del framework PHP “ALPHA”
http://github.com/diegolamonica/ALPHA/

                  I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                  International Webmasters Association - http://www.iwa.it
Il programma della giornata
                     Modulo 4 – AJAX
 Interazioni client/server




                                                                3
 Framework a confronto:
   ●   Framework jQuery
   ●   Mootools
   ●   YUI
   ●   JAST
             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
Il programma della giornata
Modulo 5 – ARIA e l’accessibilità lato client




                                                             4
 Prendere un po' di ARIA
 Le tecnologie assistive
 Ruoli, stati e proprietà
 Strumenti per lo sviluppo accessibile
          I linguaggi del Web – Diego La Monica – http://diegolamonica.info
          International Webmasters Association - http://www.iwa.it
Nota sulla slide

Nell'angolo inferiore destro di alcune slide è
presente un “pallino” come è visibile in


                                                            5
questa slide.
Esso indica che per la slide è prevista una
sessione pratica.

         I linguaggi del Web – Diego La Monica – http://diegolamonica.info
         International Webmasters Association - http://www.iwa.it
Modulo 4 - AJAX

  I linguaggi del Web – Diego La Monica – http://diegolamonica.info
  International Webmasters Association - http://www.iwa.it
Cos'è AJAX

AJAX, acronimo di Asynchronous JavaScript and XML, è
una tecnica di sviluppo web per creare applicazioni web
interattive. L'intento di tale tecnica è quello di ottenere




                                                                 7
pagine web che rispondono in maniera più rapida, grazie
allo scambio in background di piccoli pacchetti di dati con
il server, così che l'intera pagina web non debba essere
ricaricata ogni volta che l'utente effettua una modifica.
(Wikipedia: AJAX)



              I linguaggi del Web – Diego La Monica – http://diegolamonica.info
              International Webmasters Association - http://www.iwa.it
Cosa si intende per AJAX?

Col tempo AJAX ha assunto un significato (impropriamente) più
esteso: è AJAX tutto ciò che modifica il DOM.




                                                                8
   ●   Caricamento di frammenti di pagina

   ●   Animazione di oggetti sulla pagina

   ●   Applicazione e modifica dello stile degli elementi sul
       documento

             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
XMLHttpRequest alla base di tutto
function crea_XMLHttpRequest(){
    var obj = null;
    if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object"){
        obj = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        obj = createFromActiveX();
    }
    return obj;
}




function createFromActiveX() {




}
    var aVersions = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",




    }
            var oXmlHttp = new ActiveXObject(aVersions[i]);
            return oXmlHttp;
        } catch (oError) { /* Do nothing */ }

    return null;
                                                                       9
              "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp" ];
    for (var i = 0; i < aVersions.length; i++) {
        try {




                I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                International Webmasters Association - http://www.iwa.it
AJAX Graceful Degradation
●   L'esecuzione dello script avviene regolarmente

●   Se il set di istruzioni Javascript non è completamente




                                                     10
    implementato (Es. su dispositivi mobili di vecchia generazione

    o su browser testuali) esegue operazioni non basate su

    Javascript (eseguendo per ogni azione il reload completo

    della pagina) (Graceful Degradation)
             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
Progressive Enhancement AJAX
●   Tutte le funzioni sono implementate senza necessità di
    Javascript
    Quando tutti i nodi del DOM sono disponibili



                                                    11
●



    si esegue un metodo che andrà ad alterare i nodi del
    DOM integrandoli con altri nodi, definendo nuove
    caratteristiche o inserendo degli script JavaScript.
    document.getElementById('myLink').onclick='…';
            I linguaggi del Web – Diego La Monica – http://diegolamonica.info
            International Webmasters Association - http://www.iwa.it
Intercettare il DOM Ready
●   Evento Load viene scatenato dopo che sono stati
    caricati tutti i contenuti degli elementi sul documento
    (img, object, javascript, stili)… Troppo tardi!




                                                    12
●   Evento DOM Ready viene scatenato quando la pagina
    HTML è stata caricata anche se i contenuti (css,
    javascript, immagini … ) non sono ancora disponibili.

            I linguaggi del Web – Diego La Monica – http://diegolamonica.info
            International Webmasters Association - http://www.iwa.it
Intercettare lo stato DOMReady
Per Firefox, Opera 8.x (o precedenti), Internet Explorer 9 e
Webkit (dalla versione 525):

document.addEventListener(document, "DOMContentLoaded", metodoDiStartup);




                                                          13
Modalità conforme alle specifiche delW3C




                I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                International Webmasters Association - http://www.iwa.it
Intercettare lo stato DOMReady
Per Internet Explorer:

document.write("<scr" +
             "ipt id=__ie_init defer=defer " +
             "src="//:"></script>");




                                                         14
var script = document.getElementById("__ie_init");
if ( script )
     script.onreadystatechange = function() {
         if ( this.readyState != "complete" ) return;
         metodoDiStartup();
    };
script = null;




                 I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                 International Webmasters Association - http://www.iwa.it
Intercettare lo stato DOMReady
Per WebKit prima della versione 525 e Opera 9

function testDOMReady(){
     _testDOMReady = setInterval(function(){
         if ( document.readyState == "loaded" ||




                                                          15
                                         document.readyState == "complete" ) {
              clearInterval( _testDOMReady );
              _testDOMReady = null;
              testDOMReady();
         }
    }, 10);
}




                I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                International Webmasters Association - http://www.iwa.it
Framework
●   Sviluppo rapido
●   Cross-browser
●



●
    Semplificano problemi complessi...
    ...complicano problemi semplici!             16
         I linguaggi del Web – Diego La Monica – http://diegolamonica.info
         International Webmasters Association - http://www.iwa.it
Cosa sono i Framework?
   Sono le fondamenta
 dell’edilizia del software



                                                     17
Lo scopo di un framework è di risparmiare allo
sviluppatore la riscrittura di codice già steso in
precedenza per compiti simili. Questa circostanza si è
presentata sempre più spesso man mano che le
interfacce utente sono diventate sempre più complesse,
o più in generale man mano che è aumentata la quantità
di software con funzionalità secondarie simili.
             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
jQuery v 1.5.1
jQuery is a fast and concise JavaScript Library that simplifies HTML
document traversing, event handling, animating, and Ajax interactions
for rapid web development. jQuery is designed to change the
way that you write JavaScript.




                                                     18
Dimensioni:
29Kb Minified + Gzipped (usata in ambienti di produzione)
212Kb Versione non compressa di sviluppo.

                           http://jquery.com

             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
MooTools v 1.3.1
MooTools is a compact, modular, Object-Oriented JavaScript
framework designed for the intermediate to advanced JavaScript
developer. It allows you to write powerful, flexible, and cross-browser
code with its elegant, well documented, and coherent API.




                                                     19
Dimensioni:
~25Kb Minified + Gzipped (usata in ambienti di produzione)
142Kb Versione non compressa di sviluppo.

                          http://mootools.net

             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
YUI Library v 3
YUI 3 is Yahoo!'s next-generation JavaScript and CSS library. It powers the
new Yahoo! homepage,Yahoo! Mail, and many other Yahoo! sites. The YUI
3 Library has been redesigned and rewritten from the ground up
incorporating what we've learned in five years of dedicated library
development. The library includes the core components, a full suite of




                                                      20
utilities, the Widget Infrastructure, a growing collection of widgets, CSS
resources, and tools.
Dimensioni:
6.9Kb Minified + Gzipped (usata in ambienti di produzione)
7.2Mb Versione non compressa di sviluppo completa di esempi.
                   http://developer.yahoo.com/yui/3/

              I linguaggi del Web – Diego La Monica – http://diegolamonica.info
              International Webmasters Association - http://www.iwa.it
Axs Library
Axs is a small Javascript library which provides methods
which make it easier for web developers to implement
modern Web 2.0 sites with accessible features.




                                                   21
Dimensioni:
24.6Kb
                      http://dev.aol.com/axs




           I linguaggi del Web – Diego La Monica – http://diegolamonica.info
           International Webmasters Association - http://www.iwa.it
JAST
JAST è un Framework Javascript per lo sviluppo agile di
applicazioni e siti web arricchendo la presentazione di
effetti ed aiutando lo sviluppatore nell'arduo compito di
presentare i contenuti allo stesso modo sulle più disparate




                                                   22
piattaforme.

Dimensioni:
29.8Kb
  https://github.com/diegolamonica/ALPHA/tree/master/scripts


           I linguaggi del Web – Diego La Monica – http://diegolamonica.info
           International Webmasters Association - http://www.iwa.it
Richiesta AJAX con MooTools
<script src="mootools-core-1.3.1-full-compat.js"
    type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
  var result = $('result');        // ottiene un elemento dal DOM con id=result
  var req = new Request({          // Istanzia una nuova richiesta AJAX
    url: '/echo/html/',
    onRequest: function(){         // Definisce il metodo da invocare all'esecuzione




                                                              23
        result.set('text', 'Caricamento in corso...');
    },
    onSuccess: function(txt){      // metodo da invocare con risposta positiva (200)
        result.set('text', txt);
    },
    onFailure: function(){         // Metodo da invocare in caso di errori
        result.set('text', 'La richiesta non ha avuto esito positivo.');
    }
  });
  req.send({url: 'miapagina.php'});       // Effettua la richiesta AJAX
</script>


                  I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                  International Webmasters Association - http://www.iwa.it
Richiesta AJAX con YUI
<script src="http://yui.yahooapis.com/3.3.0/build/yui/yui-min.js"
      type="text/javascript" charset="utf-8"></script>


<script type="text/javascript">
YUI().use("io-base", function(Y) {       // richiede l'uso del modulo io-base
      var uri = "miapagina.php";




                                                               24
      function complete(id, o, args) {
           var data = o.responseText; // Response data.
           YUI().one('#mycontents').set('innerHTML', data);
      };


      Y.on('io:complete', complete, Y);      // Associa all'evento io:complete
                                             // l'invocazione del metodo complete


      var request = Y.io(uri);               // Esegue la richiesta
});
</script>


                   I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                   International Webmasters Association - http://www.iwa.it
Richiesta AJAX con jQuery
<script src="jquery-1.5.1.min.js" type="text/javascript"></script>


<script type="text/javascript">
$.ajax({                          // Effettua una chiamata AJAX
  url: "miapagina.php",
  success: function(data){        // Metodo di callback
      $(this).innerHML = data;




                                                             25
  }
  Context: $('#mycontents'),      // Definisce l'oggetto a cui si riferisce il this
                                  // del metodo success.
});
</script>




                  I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                  International Webmasters Association - http://www.iwa.it
Richiesta AJAX con JAST
<script src="JAST.src.js" type="text/javascript" charset="utf-8"></script>


<script type="text/javascript">
_.xhttp.get('miapagina.php',           // Effettua una chiamata AJAX
            {
                 param: 'abc'          // Fornendo i seguenti parametri in GET
            },




                                                             26
            function(buffer){          // Funzione di callback
                 _._id('mycontents').innerHTML = buffer;
            }
);
</script>




                   I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                   International Webmasters Association - http://www.iwa.it
Rendere dei link “AJAX” compliant
/* Aggancia la funzione myAjaxFn all'evento click per tutti i link disponibili
nel DOM con classe “ajax” */
var ajaxLinks=document.getElmentsByTagName("a");
var lun=ajaxLinks.length;
for (n=0;n<lun;n++) {
    if (ajaxLinks[n].className.indexOf('ajax')){




                                                       27
        CrossBrowserAttachEventFunction(
            ajaxLinks[n], 'click', myAjaxFn);
    }
}
…
function CrossBrowserAttachEventFunction(node, eventName, theFunction){
    …
}
function myAjaxFn(event){
    …
}


               I linguaggi del Web – Diego La Monica – http://diegolamonica.info
               International Webmasters Association - http://www.iwa.it
Punti deboli
●   link con classe “ajaxes” o contentente il termine “ajax” saranno
    conteggiati.
●   Bisogna scrivere una routine cross-browser per agganciare la funzione




                                                       28
    all'evento ( CrossBrowserAttachEventFunction )
     ●   Alcuni browser supportano il metodo addEventListener

     ●   Altri supportano il metodo attachEvent

     ●   Altri non supportano né l'uno né l'altro

●   Bisogna testare il codice scritto in più browser
               I linguaggi del Web – Diego La Monica – http://diegolamonica.info
               International Webmasters Association - http://www.iwa.it
Rendere dei link AJAX con jQuery
/* Aggancia la funzione myAjaxFn all'evento click per
tutti i link disponibili nel DOM con classe “ajax” */



var ajaxLinks = $('a.ajax');




                                                     29
ajaxLinks.click(myAjaxFn);



function myAjaxFn(){

    …

}

             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
Rendere dei link AJAX con JAST
/* Aggancia la funzione myAjaxFn all'evento click per
tutti i link disponibili nel DOM con classe “ajax” */



var ajaxLinks = _._class('ajax', null, 'a');




                                                     30
_.Events.add(ajaxLinks, 'click', myAjaxFn);



function myAjaxFn(){

    …

}

             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
Problema: tecnologie assistive
●   Le tecnologie assistive non sono in grado di verificare quello che
    succede nella pagina, perchè per ciascun cambiamento che noi
    percepiamo a video, è cambiato qualcosa nel Document Object




                                                      31
    Model (DOM).
●   Mantenere traccia di tutti i cambiamenti potrebbe portare ad una
    confusione totale delle tecnologie assistive con conseguenze
    caotiche sulle informazioni trasmesse all'utilizzatore.




              I linguaggi del Web – Diego La Monica – http://diegolamonica.info
              International Webmasters Association - http://www.iwa.it
Prendere un po' d'ARIA
Il gruppo di lavoro Protocols & Formats (W3C PFWG),
sta lavorando ad una serie di specifiche con lo scopo di
migliorare l'accessibilità delle applicazioni Web.




                                                   32
  Accessible Rich Internet Applications (WAI-ARIA) 1.0


                                http://www.w3.org/TR/wai-aria/

           I linguaggi del Web – Diego La Monica – http://diegolamonica.info
           International Webmasters Association - http://www.iwa.it
DocType con ARIA
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+ARIA 1.0//EN"

    "http://www.w3.org/WAI/ARIA/schemata/xhtml-aria-1.dtd">

●    Estende la specifica XHTML 1.1 con le nuove caratteristiche di
     WAI-ARIA




                                                      33
●    I documenti che fanno uso della specifica WAI-ARIA, possono
     essere validati utilizzando la seguente DTD
     http://www.w3.org/WAI/ARIA/schemata/xhtml-aria-1.dtd
●    Non tutti i browser supportano però XHTML 1.1 servito come
     Application/XHTML+XML
              I linguaggi del Web – Diego La Monica – http://diegolamonica.info
              International Webmasters Association - http://www.iwa.it
ARIA in sintesi
●   Aggiunge nuove caratteristiche al documento web

●   Rende un'applicazione web “teoricamente” accessibile




                                                    34
●   Descrive meglio ciascun elemento “fondamentale” del

    documento o dell'applicazione

●   Aumenta quindi il valore semantico degli elementi e

    della pagina
            I linguaggi del Web – Diego La Monica – http://diegolamonica.info
            International Webmasters Association - http://www.iwa.it
Alcune caratteristiche di ARIA
●   aria-live (polite, assertive, off)
●   aria-relevant (additions, removals)




                                                   35
●   aria-describedby
●   aria-labelledby

        http://www.w3.org/TR/wai-aria/appendices#quickref

           I linguaggi del Web – Diego La Monica – http://diegolamonica.info
           International Webmasters Association - http://www.iwa.it
L'ARIA giusta per ogni cosa
●   Il menu di un'applicazione può supportare ARIA
●   Una serie di schede organizzate a tab possono supportare
    ARIA




                                                    36
●   Un elemento non di tipo INPUT può diventare una
    checkbox con ARIA
Per ogni soluzione che adotta le specifiche ARIA comunque è
necessario garantire la navigazione da tastiera


            I linguaggi del Web – Diego La Monica – http://diegolamonica.info
            International Webmasters Association - http://www.iwa.it
Strumenti client – Browser
●   Mozilla Firefox

●   Opera




                                                     37
●   Safari

●   Chrome

●   IETester (IE 5.5, IE 6, IE 7, IE 8)

             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
Strumenti client (Mozilla Firefox)
●   Firebug: per osservare e apportare cambiamenti al DOM, debug
    di Javascript, monitoraggio del traffico client/server.
●   Headings Map: mostra i livelli di nidificazione degli header in una




                                                      38
    pagina.
●   WCAG Contrast checker: analizzatore del contrasto cromatico
    in conformita con le indicazioni WCAG 1.0 e 2.0
●   Web developer: strumenti di controllo delle applicazioni web.
●   Firevox: Screen reader per Firefox (fino alla versione 2.x di Firefox)
              I linguaggi del Web – Diego La Monica – http://diegolamonica.info
              International Webmasters Association - http://www.iwa.it
Strumenti client (Opera)
●   Dragonfly: editor di debug e monitoraggio

    performance simile a firebug ma molto più




                                                   39
    limitato.




           I linguaggi del Web – Diego La Monica – http://diegolamonica.info
           International Webmasters Association - http://www.iwa.it
Strumenti client (Google Chrome)
●   Firebug: analogo al plugin per Mozilla Firefox con diverse
    limitazioni dipendenti dalle policy di sicurezza di Google
    Chrome.




                                                        40
●   Task Manager: per terminare solo le finestre che diventano
    instabili e monitoraggio delle risorse sfruttate da ciascun
    processo.
●   Strumenti per sviluppatori: per monitorare le performance
    di caricamento
                I linguaggi del Web – Diego La Monica – http://diegolamonica.info
                International Webmasters Association - http://www.iwa.it
Riferimenti e approfondimenti #1
●   Webaccessibile.org
    http://www.webaccessibile.org




                                                  41
●   JSON (JavaScript Object Notation)
    http://json.org
●   AJAX su Wikipedia
    http://it.wikipedia.org/wiki/AJAX
          I linguaggi del Web – Diego La Monica – http://diegolamonica.info
          International Webmasters Association - http://www.iwa.it
Riferimenti e approfondimenti #2
●   Tutti per uno … XMLHttpRequest per tutti!

    http://diegolamonica.info/tutorials/index.php?id=6




                                                    42
●   Accessible Rich Internet Applications (WAI-ARIA)

    Version 1.0 http://www.w3.org/TR/wai-aria/

●   Applicazioni AJAX Accessibili

    http://diegolamonica.info/smau-2008/
            I linguaggi del Web – Diego La Monica – http://diegolamonica.info
            International Webmasters Association - http://www.iwa.it
Riferimenti e approfondimenti #3
●   jQuery http://jquery.com

●   MooTools http://mootools.org




                                                     43
●   YUI Library http://developer.yahoo.com/yui/3/

●   Axs Library http://dev.aol.com/axs

●   JAST http://jastegg.it e

    http://github.com/diegolamonica/ALPHA/master/tree/scripts/

             I linguaggi del Web – Diego La Monica – http://diegolamonica.info
             International Webmasters Association - http://www.iwa.it
I linguaggi del Web – 2ª Ed. (3° Giorno)

 Diego La Monica – Web Solution Developer
 Email:       me@diegolamonica.info
 Web:         http://diegolamonica.info
 Twitter:     http://twitter.com/jast/
 Slide Share: http://slideshare.net/diego.la.monica/
 Skype:       diego.la.monica
 Mobile:      +39 333 7235382

Contenu connexe

En vedette

System center virtual machine manager self service portal 2.0
System center virtual machine manager self service portal 2.0System center virtual machine manager self service portal 2.0
System center virtual machine manager self service portal 2.0Fabrizio Volpe
 
2015 trust rating system - esempio report di sintesi
2015   trust rating system - esempio report di sintesi2015   trust rating system - esempio report di sintesi
2015 trust rating system - esempio report di sintesigiorgio cannizzaro
 
Small business survival rules for success
Small business survival rules for successSmall business survival rules for success
Small business survival rules for successFrank Penkala
 
HOW TO REMAIN POSITIVE IN NEGATIVE SITUATIONS
HOW TO REMAIN POSITIVE IN NEGATIVE SITUATIONSHOW TO REMAIN POSITIVE IN NEGATIVE SITUATIONS
HOW TO REMAIN POSITIVE IN NEGATIVE SITUATIONSKANNAN VENKITARAMAN
 

En vedette (7)

System center virtual machine manager self service portal 2.0
System center virtual machine manager self service portal 2.0System center virtual machine manager self service portal 2.0
System center virtual machine manager self service portal 2.0
 
12 rules for business success
12 rules for business success12 rules for business success
12 rules for business success
 
2015 trust rating system - esempio report di sintesi
2015   trust rating system - esempio report di sintesi2015   trust rating system - esempio report di sintesi
2015 trust rating system - esempio report di sintesi
 
Small business survival rules for success
Small business survival rules for successSmall business survival rules for success
Small business survival rules for success
 
HOW TO REMAIN POSITIVE IN NEGATIVE SITUATIONS
HOW TO REMAIN POSITIVE IN NEGATIVE SITUATIONSHOW TO REMAIN POSITIVE IN NEGATIVE SITUATIONS
HOW TO REMAIN POSITIVE IN NEGATIVE SITUATIONS
 
Introduzione A Plone
Introduzione A PloneIntroduzione A Plone
Introduzione A Plone
 
10 LAWS OF LIFE
10 LAWS OF LIFE10 LAWS OF LIFE
10 LAWS OF LIFE
 

Similaire à I linguaggi del web - seconda edizione (3° giornata)

Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
I linguaggi del web - seconda edizione (1° giornata)
I linguaggi del web - seconda edizione (1° giornata)I linguaggi del web - seconda edizione (1° giornata)
I linguaggi del web - seconda edizione (1° giornata)Diego La Monica
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringMarcello Teodori
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Giorgio Carpoca
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
JAMP al barcamp CATANIA 2009
JAMP al barcamp CATANIA 2009JAMP al barcamp CATANIA 2009
JAMP al barcamp CATANIA 2009jampslide
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di riaLorenzo Bortolotto
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Antonio Gallo
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...DrupalDay
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 

Similaire à I linguaggi del web - seconda edizione (3° giornata) (20)

Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
I linguaggi del web - seconda edizione (1° giornata)
I linguaggi del web - seconda edizione (1° giornata)I linguaggi del web - seconda edizione (1° giornata)
I linguaggi del web - seconda edizione (1° giornata)
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
Link. javascript ajax
  Link. javascript ajax  Link. javascript ajax
Link. javascript ajax
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
JAMP al barcamp CATANIA 2009
JAMP al barcamp CATANIA 2009JAMP al barcamp CATANIA 2009
JAMP al barcamp CATANIA 2009
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Portofino per Jug Padova
Portofino per Jug PadovaPortofino per Jug Padova
Portofino per Jug Padova
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 

Plus de Diego La Monica

E se non avessi davvero bisogno di un app?
E se non avessi davvero bisogno di un app?E se non avessi davvero bisogno di un app?
E se non avessi davvero bisogno di un app?Diego La Monica
 
Analisi comportamentale nelle app: pensare agli introiti contrasta con l'util...
Analisi comportamentale nelle app: pensare agli introiti contrasta con l'util...Analisi comportamentale nelle app: pensare agli introiti contrasta con l'util...
Analisi comportamentale nelle app: pensare agli introiti contrasta con l'util...Diego La Monica
 
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?Diego La Monica
 
Cordova: un viaggio di sola andata
Cordova: un viaggio di sola andataCordova: un viaggio di sola andata
Cordova: un viaggio di sola andataDiego La Monica
 
App di successo - quali strumenti? e le performance?
App di successo - quali strumenti? e le performance?App di successo - quali strumenti? e le performance?
App di successo - quali strumenti? e le performance?Diego La Monica
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
 
App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?Diego La Monica
 
Presentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoPresentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoDiego La Monica
 
Presentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoPresentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoDiego La Monica
 
Strategie per applicazioni web prima o meglio dell'app nativa
Strategie per applicazioni web prima o meglio dell'app nativaStrategie per applicazioni web prima o meglio dell'app nativa
Strategie per applicazioni web prima o meglio dell'app nativaDiego La Monica
 
Applicazioni mobili: dall'ideazione alla pubblicazione
Applicazioni mobili: dall'ideazione alla pubblicazioneApplicazioni mobili: dall'ideazione alla pubblicazione
Applicazioni mobili: dall'ideazione alla pubblicazioneDiego La Monica
 
Competenze per lo sviluppo software nellera del web
Competenze per lo sviluppo software nellera del webCompetenze per lo sviluppo software nellera del web
Competenze per lo sviluppo software nellera del webDiego La Monica
 
Siti web, Portali, Rich Internet Application: tendenze e controtendenze
Siti web, Portali, Rich Internet Application: tendenze e controtendenzeSiti web, Portali, Rich Internet Application: tendenze e controtendenze
Siti web, Portali, Rich Internet Application: tendenze e controtendenzeDiego La Monica
 
ALPHA Architectural Overview
ALPHA Architectural OverviewALPHA Architectural Overview
ALPHA Architectural OverviewDiego La Monica
 
Giochi on line: soluzione per il marketing virale!
Giochi on line: soluzione per il marketing virale!Giochi on line: soluzione per il marketing virale!
Giochi on line: soluzione per il marketing virale!Diego La Monica
 

Plus de Diego La Monica (20)

E se non avessi davvero bisogno di un app?
E se non avessi davvero bisogno di un app?E se non avessi davvero bisogno di un app?
E se non avessi davvero bisogno di un app?
 
Analisi comportamentale nelle app: pensare agli introiti contrasta con l'util...
Analisi comportamentale nelle app: pensare agli introiti contrasta con l'util...Analisi comportamentale nelle app: pensare agli introiti contrasta con l'util...
Analisi comportamentale nelle app: pensare agli introiti contrasta con l'util...
 
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
 
Cordova: un viaggio di sola andata
Cordova: un viaggio di sola andataCordova: un viaggio di sola andata
Cordova: un viaggio di sola andata
 
Css stuffs #3
Css   stuffs #3Css   stuffs #3
Css stuffs #3
 
App di successo - quali strumenti? e le performance?
App di successo - quali strumenti? e le performance?App di successo - quali strumenti? e le performance?
App di successo - quali strumenti? e le performance?
 
Css stuffs #2
Css   stuffs #2Css   stuffs #2
Css stuffs #2
 
Css stuffs #1
Css   stuffs #1Css   stuffs #1
Css stuffs #1
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformance
 
App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?
 
Presentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoPresentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successo
 
Presentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoPresentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successo
 
Strategie per applicazioni web prima o meglio dell'app nativa
Strategie per applicazioni web prima o meglio dell'app nativaStrategie per applicazioni web prima o meglio dell'app nativa
Strategie per applicazioni web prima o meglio dell'app nativa
 
Applicazioni mobili: dall'ideazione alla pubblicazione
Applicazioni mobili: dall'ideazione alla pubblicazioneApplicazioni mobili: dall'ideazione alla pubblicazione
Applicazioni mobili: dall'ideazione alla pubblicazione
 
Competenze per lo sviluppo software nellera del web
Competenze per lo sviluppo software nellera del webCompetenze per lo sviluppo software nellera del web
Competenze per lo sviluppo software nellera del web
 
SVN/TRAC
SVN/TRACSVN/TRAC
SVN/TRAC
 
Siti web, Portali, Rich Internet Application: tendenze e controtendenze
Siti web, Portali, Rich Internet Application: tendenze e controtendenzeSiti web, Portali, Rich Internet Application: tendenze e controtendenze
Siti web, Portali, Rich Internet Application: tendenze e controtendenze
 
ALPHA Architectural Overview
ALPHA Architectural OverviewALPHA Architectural Overview
ALPHA Architectural Overview
 
Giochi on line: soluzione per il marketing virale!
Giochi on line: soluzione per il marketing virale!Giochi on line: soluzione per il marketing virale!
Giochi on line: soluzione per il marketing virale!
 
Pikno
PiknoPikno
Pikno
 

I linguaggi del web - seconda edizione (3° giornata)

  • 1. I linguaggi del Web – 2ª Ed. (3° Giorno) Diego La Monica – Web Solution Developer Email: me@diegolamonica.info Web: http://diegolamonica.info Twitter: http://twitter.com/jast/ Slide Share: http://slideshare.net/diego.la.monica/ Skype: diego.la.monica Mobile: +39 333 7235382
  • 2. Chi sono? ● Web solution developer ● Membro di IWA/HWG ● Membro del Consiglio Direttivo di IWA Italy da Febbraio 2009 2 ● Membro del Gruppo di Lavoro Protocols & Format istituito dal W3C per conto di IWA/HWG ● Autore del tool “Wi.Li.” http://wili.diegolamonica.info ● Autore del framework JavaScript “JAST” http://jastegg.it ● Autore del framework PHP “ALPHA” http://github.com/diegolamonica/ALPHA/ I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 3. Il programma della giornata Modulo 4 – AJAX  Interazioni client/server 3  Framework a confronto: ● Framework jQuery ● Mootools ● YUI ● JAST I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 4. Il programma della giornata Modulo 5 – ARIA e l’accessibilità lato client 4  Prendere un po' di ARIA  Le tecnologie assistive  Ruoli, stati e proprietà  Strumenti per lo sviluppo accessibile I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 5. Nota sulla slide Nell'angolo inferiore destro di alcune slide è presente un “pallino” come è visibile in 5 questa slide. Esso indica che per la slide è prevista una sessione pratica. I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 6. Modulo 4 - AJAX I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 7. Cos'è AJAX AJAX, acronimo di Asynchronous JavaScript and XML, è una tecnica di sviluppo web per creare applicazioni web interattive. L'intento di tale tecnica è quello di ottenere 7 pagine web che rispondono in maniera più rapida, grazie allo scambio in background di piccoli pacchetti di dati con il server, così che l'intera pagina web non debba essere ricaricata ogni volta che l'utente effettua una modifica. (Wikipedia: AJAX) I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 8. Cosa si intende per AJAX? Col tempo AJAX ha assunto un significato (impropriamente) più esteso: è AJAX tutto ciò che modifica il DOM. 8 ● Caricamento di frammenti di pagina ● Animazione di oggetti sulla pagina ● Applicazione e modifica dello stile degli elementi sul documento I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 9. XMLHttpRequest alla base di tutto function crea_XMLHttpRequest(){ var obj = null; if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object"){ obj = new XMLHttpRequest(); } else if (window.ActiveXObject) { obj = createFromActiveX(); } return obj; } function createFromActiveX() { } var aVersions = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", } var oXmlHttp = new ActiveXObject(aVersions[i]); return oXmlHttp; } catch (oError) { /* Do nothing */ } return null; 9 "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp" ]; for (var i = 0; i < aVersions.length; i++) { try { I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 10. AJAX Graceful Degradation ● L'esecuzione dello script avviene regolarmente ● Se il set di istruzioni Javascript non è completamente 10 implementato (Es. su dispositivi mobili di vecchia generazione o su browser testuali) esegue operazioni non basate su Javascript (eseguendo per ogni azione il reload completo della pagina) (Graceful Degradation) I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 11. Progressive Enhancement AJAX ● Tutte le funzioni sono implementate senza necessità di Javascript Quando tutti i nodi del DOM sono disponibili 11 ● si esegue un metodo che andrà ad alterare i nodi del DOM integrandoli con altri nodi, definendo nuove caratteristiche o inserendo degli script JavaScript. document.getElementById('myLink').onclick='…'; I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 12. Intercettare il DOM Ready ● Evento Load viene scatenato dopo che sono stati caricati tutti i contenuti degli elementi sul documento (img, object, javascript, stili)… Troppo tardi! 12 ● Evento DOM Ready viene scatenato quando la pagina HTML è stata caricata anche se i contenuti (css, javascript, immagini … ) non sono ancora disponibili. I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 13. Intercettare lo stato DOMReady Per Firefox, Opera 8.x (o precedenti), Internet Explorer 9 e Webkit (dalla versione 525): document.addEventListener(document, "DOMContentLoaded", metodoDiStartup); 13 Modalità conforme alle specifiche delW3C I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 14. Intercettare lo stato DOMReady Per Internet Explorer: document.write("<scr" + "ipt id=__ie_init defer=defer " + "src="//:"></script>"); 14 var script = document.getElementById("__ie_init"); if ( script ) script.onreadystatechange = function() { if ( this.readyState != "complete" ) return; metodoDiStartup(); }; script = null; I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 15. Intercettare lo stato DOMReady Per WebKit prima della versione 525 e Opera 9 function testDOMReady(){ _testDOMReady = setInterval(function(){ if ( document.readyState == "loaded" || 15 document.readyState == "complete" ) { clearInterval( _testDOMReady ); _testDOMReady = null; testDOMReady(); } }, 10); } I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 16. Framework ● Sviluppo rapido ● Cross-browser ● ● Semplificano problemi complessi... ...complicano problemi semplici! 16 I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 17. Cosa sono i Framework? Sono le fondamenta dell’edilizia del software 17 Lo scopo di un framework è di risparmiare allo sviluppatore la riscrittura di codice già steso in precedenza per compiti simili. Questa circostanza si è presentata sempre più spesso man mano che le interfacce utente sono diventate sempre più complesse, o più in generale man mano che è aumentata la quantità di software con funzionalità secondarie simili. I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 18. jQuery v 1.5.1 jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. 18 Dimensioni: 29Kb Minified + Gzipped (usata in ambienti di produzione) 212Kb Versione non compressa di sviluppo. http://jquery.com I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 19. MooTools v 1.3.1 MooTools is a compact, modular, Object-Oriented JavaScript framework designed for the intermediate to advanced JavaScript developer. It allows you to write powerful, flexible, and cross-browser code with its elegant, well documented, and coherent API. 19 Dimensioni: ~25Kb Minified + Gzipped (usata in ambienti di produzione) 142Kb Versione non compressa di sviluppo. http://mootools.net I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 20. YUI Library v 3 YUI 3 is Yahoo!'s next-generation JavaScript and CSS library. It powers the new Yahoo! homepage,Yahoo! Mail, and many other Yahoo! sites. The YUI 3 Library has been redesigned and rewritten from the ground up incorporating what we've learned in five years of dedicated library development. The library includes the core components, a full suite of 20 utilities, the Widget Infrastructure, a growing collection of widgets, CSS resources, and tools. Dimensioni: 6.9Kb Minified + Gzipped (usata in ambienti di produzione) 7.2Mb Versione non compressa di sviluppo completa di esempi. http://developer.yahoo.com/yui/3/ I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 21. Axs Library Axs is a small Javascript library which provides methods which make it easier for web developers to implement modern Web 2.0 sites with accessible features. 21 Dimensioni: 24.6Kb http://dev.aol.com/axs I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 22. JAST JAST è un Framework Javascript per lo sviluppo agile di applicazioni e siti web arricchendo la presentazione di effetti ed aiutando lo sviluppatore nell'arduo compito di presentare i contenuti allo stesso modo sulle più disparate 22 piattaforme. Dimensioni: 29.8Kb https://github.com/diegolamonica/ALPHA/tree/master/scripts I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 23. Richiesta AJAX con MooTools <script src="mootools-core-1.3.1-full-compat.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> var result = $('result'); // ottiene un elemento dal DOM con id=result var req = new Request({ // Istanzia una nuova richiesta AJAX url: '/echo/html/', onRequest: function(){ // Definisce il metodo da invocare all'esecuzione 23 result.set('text', 'Caricamento in corso...'); }, onSuccess: function(txt){ // metodo da invocare con risposta positiva (200) result.set('text', txt); }, onFailure: function(){ // Metodo da invocare in caso di errori result.set('text', 'La richiesta non ha avuto esito positivo.'); } }); req.send({url: 'miapagina.php'}); // Effettua la richiesta AJAX </script> I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 24. Richiesta AJAX con YUI <script src="http://yui.yahooapis.com/3.3.0/build/yui/yui-min.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> YUI().use("io-base", function(Y) { // richiede l'uso del modulo io-base var uri = "miapagina.php"; 24 function complete(id, o, args) { var data = o.responseText; // Response data. YUI().one('#mycontents').set('innerHTML', data); }; Y.on('io:complete', complete, Y); // Associa all'evento io:complete // l'invocazione del metodo complete var request = Y.io(uri); // Esegue la richiesta }); </script> I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 25. Richiesta AJAX con jQuery <script src="jquery-1.5.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $.ajax({ // Effettua una chiamata AJAX url: "miapagina.php", success: function(data){ // Metodo di callback $(this).innerHML = data; 25 } Context: $('#mycontents'), // Definisce l'oggetto a cui si riferisce il this // del metodo success. }); </script> I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 26. Richiesta AJAX con JAST <script src="JAST.src.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> _.xhttp.get('miapagina.php', // Effettua una chiamata AJAX { param: 'abc' // Fornendo i seguenti parametri in GET }, 26 function(buffer){ // Funzione di callback _._id('mycontents').innerHTML = buffer; } ); </script> I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 27. Rendere dei link “AJAX” compliant /* Aggancia la funzione myAjaxFn all'evento click per tutti i link disponibili nel DOM con classe “ajax” */ var ajaxLinks=document.getElmentsByTagName("a"); var lun=ajaxLinks.length; for (n=0;n<lun;n++) { if (ajaxLinks[n].className.indexOf('ajax')){ 27 CrossBrowserAttachEventFunction( ajaxLinks[n], 'click', myAjaxFn); } } … function CrossBrowserAttachEventFunction(node, eventName, theFunction){ … } function myAjaxFn(event){ … } I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 28. Punti deboli ● link con classe “ajaxes” o contentente il termine “ajax” saranno conteggiati. ● Bisogna scrivere una routine cross-browser per agganciare la funzione 28 all'evento ( CrossBrowserAttachEventFunction ) ● Alcuni browser supportano il metodo addEventListener ● Altri supportano il metodo attachEvent ● Altri non supportano né l'uno né l'altro ● Bisogna testare il codice scritto in più browser I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 29. Rendere dei link AJAX con jQuery /* Aggancia la funzione myAjaxFn all'evento click per tutti i link disponibili nel DOM con classe “ajax” */ var ajaxLinks = $('a.ajax'); 29 ajaxLinks.click(myAjaxFn); function myAjaxFn(){ … } I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 30. Rendere dei link AJAX con JAST /* Aggancia la funzione myAjaxFn all'evento click per tutti i link disponibili nel DOM con classe “ajax” */ var ajaxLinks = _._class('ajax', null, 'a'); 30 _.Events.add(ajaxLinks, 'click', myAjaxFn); function myAjaxFn(){ … } I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 31. Problema: tecnologie assistive ● Le tecnologie assistive non sono in grado di verificare quello che succede nella pagina, perchè per ciascun cambiamento che noi percepiamo a video, è cambiato qualcosa nel Document Object 31 Model (DOM). ● Mantenere traccia di tutti i cambiamenti potrebbe portare ad una confusione totale delle tecnologie assistive con conseguenze caotiche sulle informazioni trasmesse all'utilizzatore. I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 32. Prendere un po' d'ARIA Il gruppo di lavoro Protocols & Formats (W3C PFWG), sta lavorando ad una serie di specifiche con lo scopo di migliorare l'accessibilità delle applicazioni Web. 32 Accessible Rich Internet Applications (WAI-ARIA) 1.0 http://www.w3.org/TR/wai-aria/ I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 33. DocType con ARIA <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+ARIA 1.0//EN" "http://www.w3.org/WAI/ARIA/schemata/xhtml-aria-1.dtd"> ● Estende la specifica XHTML 1.1 con le nuove caratteristiche di WAI-ARIA 33 ● I documenti che fanno uso della specifica WAI-ARIA, possono essere validati utilizzando la seguente DTD http://www.w3.org/WAI/ARIA/schemata/xhtml-aria-1.dtd ● Non tutti i browser supportano però XHTML 1.1 servito come Application/XHTML+XML I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 34. ARIA in sintesi ● Aggiunge nuove caratteristiche al documento web ● Rende un'applicazione web “teoricamente” accessibile 34 ● Descrive meglio ciascun elemento “fondamentale” del documento o dell'applicazione ● Aumenta quindi il valore semantico degli elementi e della pagina I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 35. Alcune caratteristiche di ARIA ● aria-live (polite, assertive, off) ● aria-relevant (additions, removals) 35 ● aria-describedby ● aria-labelledby http://www.w3.org/TR/wai-aria/appendices#quickref I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 36. L'ARIA giusta per ogni cosa ● Il menu di un'applicazione può supportare ARIA ● Una serie di schede organizzate a tab possono supportare ARIA 36 ● Un elemento non di tipo INPUT può diventare una checkbox con ARIA Per ogni soluzione che adotta le specifiche ARIA comunque è necessario garantire la navigazione da tastiera I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 37. Strumenti client – Browser ● Mozilla Firefox ● Opera 37 ● Safari ● Chrome ● IETester (IE 5.5, IE 6, IE 7, IE 8) I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 38. Strumenti client (Mozilla Firefox) ● Firebug: per osservare e apportare cambiamenti al DOM, debug di Javascript, monitoraggio del traffico client/server. ● Headings Map: mostra i livelli di nidificazione degli header in una 38 pagina. ● WCAG Contrast checker: analizzatore del contrasto cromatico in conformita con le indicazioni WCAG 1.0 e 2.0 ● Web developer: strumenti di controllo delle applicazioni web. ● Firevox: Screen reader per Firefox (fino alla versione 2.x di Firefox) I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 39. Strumenti client (Opera) ● Dragonfly: editor di debug e monitoraggio performance simile a firebug ma molto più 39 limitato. I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 40. Strumenti client (Google Chrome) ● Firebug: analogo al plugin per Mozilla Firefox con diverse limitazioni dipendenti dalle policy di sicurezza di Google Chrome. 40 ● Task Manager: per terminare solo le finestre che diventano instabili e monitoraggio delle risorse sfruttate da ciascun processo. ● Strumenti per sviluppatori: per monitorare le performance di caricamento I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 41. Riferimenti e approfondimenti #1 ● Webaccessibile.org http://www.webaccessibile.org 41 ● JSON (JavaScript Object Notation) http://json.org ● AJAX su Wikipedia http://it.wikipedia.org/wiki/AJAX I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 42. Riferimenti e approfondimenti #2 ● Tutti per uno … XMLHttpRequest per tutti! http://diegolamonica.info/tutorials/index.php?id=6 42 ● Accessible Rich Internet Applications (WAI-ARIA) Version 1.0 http://www.w3.org/TR/wai-aria/ ● Applicazioni AJAX Accessibili http://diegolamonica.info/smau-2008/ I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 43. Riferimenti e approfondimenti #3 ● jQuery http://jquery.com ● MooTools http://mootools.org 43 ● YUI Library http://developer.yahoo.com/yui/3/ ● Axs Library http://dev.aol.com/axs ● JAST http://jastegg.it e http://github.com/diegolamonica/ALPHA/master/tree/scripts/ I linguaggi del Web – Diego La Monica – http://diegolamonica.info International Webmasters Association - http://www.iwa.it
  • 44. I linguaggi del Web – 2ª Ed. (3° Giorno) Diego La Monica – Web Solution Developer Email: me@diegolamonica.info Web: http://diegolamonica.info Twitter: http://twitter.com/jast/ Slide Share: http://slideshare.net/diego.la.monica/ Skype: diego.la.monica Mobile: +39 333 7235382