Clusit-Associazione Italiana per la Sicurezza Informatica
Il mio profilo su Linkedin
Il mio spazio su YouTube
Joomla Italia
Il mio profilo su vololibero.net
 
Album Picasa
 
JBrowser, forniamo contenuti appropriati PDF Stampa E-mail
Joomla 1.5
Lunedì 25 Gennaio 2010 22:32
sviluppo Joomla uso jbrowserRiuscire a conoscere i dispositivi che accedono alle nostre pagine e le loro features, può rivelarsi molto utile per offrire a ciascuno dei contenuti ad-hoc.
Guardando gli accessi al sito mi sono accorto che essere visitati da un IPhone piuttosto che da un pocket pc non è più una rarità, incominciano ad essere visite frequenti e alla ricerca di contenuti precisi, quindi con un chiaro scopo di consultazione.

Il nostro compito sarà quindi quello di individuare quanto più precisamente il tipo di media che ci visita, il suo sistema operativo, le dimensioni del suo schermo e tante altre cose che potrebbero essere utili per presentare ad ognuno una pagina consultabile.
Vediamo come ci viene in aiuto Joomla con la sua classe JBrowser.
Per poterla usare dobbiamo innanzitutto importare la classe:
#
jimport('joomla.environment.browser');
#

e crearne una sua istanza:
#
$mio_browser = JBrowser::getInstance();
#

A questo punto abbiamo a disposizione vari metodi per richiedere informazioni, ad esempio il nome del browser:
#
$nome_browser = $mio_browser->getBrowser();
#

Per poter fornire contenuti in modo appropriato, oltre a conoscere il nome del dispositivo che ci visita, diventa importante anche sapere se la tecnologia e le modalità con cui li forniremo sarà supportata.
Per questo bisogna fare una verifica sulle sue caratteristiche.
Volendo sapere se supporta javascript possiamo avvalerci del ritorno booleano di hasFeature():
#
$mio_browser->hasFeature('javascript');
#

Altre caratteristiche (Features) per cui possiamo "interrogarlo" sono:
accesskey -> Gli access key sono scorciatoie da tastiera che permettono di accedere rapidamente a un collegamento di un sito.
cite -> Il tag HTML <cite> è utilizzato per indicare una citazione e consente agli autori di fornire informazioni aggiuntive sulla citazione.
dom -> modo per accedere e aggiornare dinamicamente il contenuto, la struttura e lo stile dei documenti.
frames -> indica se il browser supporta i frames
hdml -> Handheld Device Markup Language, indica il supporto per microbrowser ovvero versioni browser per dispositivi mobili
homepage -> possibilità di raggiungere una pagina designata come homepage
html -> supporto tag html
iframes -> supporto inner frame
images -> supporto immagini
java -> supporto java
javascript -> supporto javascript
optgroup -> definisce un gruppo di opzioni raggruppate
rte -> supporto Rich Text Editor (applicazioni web, basate su javascript, che permettono di inserire in una pagina web un editor di testi avanzato, con la possibilità di aggiungere formattazioni, link e immagini)
tables -> supporto formati tabellari
utf -> supporto per l'unicode UTF
wml -> supporto elementi Wireless Markup Language
xmlhttpreq -> supporto per richieste asincrone http

Oltre alle caratteristiche potrebbe essere utile sapere anche i comportamenti o modi (Quirk) del browser secondo le nostre richieste.
Potrà il browser aprire delle finestre popup? Ecco che ci aiuta il metodo hasQuirk().
Il quirk mode è la capacità di un browser di discernere tra un "codice corretto" e visualizzarlo in modalità standard ed uno magari datato per cui verrà usato un modo di compatibilità detto appunto "quirk mode.
#
$mio_browser->hasQuirk('avoid_popup_windows');
#

Con hasQuirk() di JBrowser possiamo verificare anche altri comportamenti:
avoid_popup_windows -> bool - Verifica la possibilità di apetura di finestre popup
break_disposition_filename ->
break_disposition_header ->
broken_multipart_form ->
cache_same_url ->
chache_ssl_downloads ->
double_linebreak_textarea ->
empty_file_input_value ->
must_cache_forms ->
no_filename_spaces ->
no_hidden_overflow_tables ->
ow_gui_1.3 ->
png_trasparency ->
scroll_tds ->
scrollbar_in_way ->
windowed_controls ->
Attenzione che se alcune features o quirk vengono impedite dal codice e non dal browser, JBrowser non riuscirà a dare una risposta corretta.

Joomla è già in grado di riconoscere svariati browser senza che venga implementato codice e sono:
AvantGo, BlackBerry, Ericsson, Fresco, HotJava, i-Mode, Konqueror, Links, Lynx, MML, Motorola, Mozilla, MSIE, Nokia, Opera, Palm, Palmscape, Up, Wap, Xiino.

Altri metodi usabili di JBrowser sono:
#
getAgentString  (); //-> restituisce la stringa completa dell' user-agent
getBrowser(); //-> restituisce la stringa del browser
getFeature('$feature'); //-> restituisce se esiste la feature richiesta
getHTTPProtocol(); //-> ritorna il server protocol in uso sul server
getPlatform(); //-> restituisce la piattaforma trovata
getQuirk (string $quirk); //-> restituisce un valore booleano per il comportamento richiesto
getVersion(); //-> restituisce la versione del browser
getMajor(); //-> restituisce la major version
getMinor(); //-> restituisce la minor version
hasFeature(string $feature); //-> Verifica le features del browser
hasQuirk(string $quirk); //-> Verifica comportamento del browser.
isBrowser(string $browser); //-> Verifica se il browser passato come argomento è il browser corrente
isRobot(); //-> verifica se il è un bot
isSSLConnection(); //-> verifica se stiamo usando una connessione sicura (SSL)
isViewable(string $mimetype); //-> verifica se il browser può interpretare il MIME type passato come argomento
match([string $userAgent = null], [string $accept = null]); //-> esegue il parsing della stringa user agent e crea un'oggetto con tutte le features e i quirks del browser utilizzato
setBrowser(string $browser); //-> imposta il browser
setFeature(string $feature, [string $value = true]); //-> imposta le features del browser.
setQuirk(string $quirk, [string $value = true]); //-> imposta una caratteristica del browser.
#
 
 
Questo sito è dedicato alla mia ed altrui curiosità, come primordiale bisogno di conoscere, capire nella sua complessità ogni cosa. Questo sito è basato sul framework Joomla1.5.xx!. Ogni contenuto o script pubblicato è di libera consultazione e duplicazione purchè se ne citi la fonte. Clicca qui per votare