Flash detect: come rilevare Flash

Sabato 9 Dicembre, 2006

Come si può determinare se un browser ha installata la versione corretta del Plugin Adobe Flash? Per fare questo esistono - notoriamente - 5 tecniche:

  • Affidarsi alla caratteristica auto-installante dei TAG OBJECT ed EMBED
  • Utilizzare uno script (Javascript e/o VBScript) appositamente fornito da Adobe
  • Utilizzare un artifizio con un solo filmato Flash
  • Non fare nulla ;)
  • Far scegliere all'utente

Affidarsi alla caratteristica auto-installante del TAG OBJECT/EMBED

NOTA: Netscape Navigator (per Macintosh e Windows) e Internet Explorer (per Macintosh) non hanno la capacità di rilevare autmaticamente Flash.

1. Installazione on Demand

Questa tecnica si basa sostanzialmente sulle impostazione del browser. Dal menu Strumenti->Opzioni Internet è possibile impostare nella scheda Avanzata alcune proprietà rigiuardo gli ActiveX Object per Internet Explorer. Questa tecnica, ovviamente, è legata alle particolari impostazioni dell'utente finale.

2. Il TAG HTML OBJECT, gli attributi classid e codebase

Il TAG OBJECT in Internet Explorer ha due attributi utili per il download e controllo del Plugin Flash (questo è valido anche per altri tipi di componenti). Il classid è un attributo che identifica in modo univoco un oggetto ActiveX, nel nostro caso il dodice:

clsid:D27CDB6E-AE6D-11cf-96B8-444553540000

identifica Adobe Flash.

L'attributo codebase indica la locazione sulla rete dove può essere trovato il file, in pratica dice al browser dove scaricare Adobe Flash:

http://download.macromedia.com/pub/shockwave/cabs/ flash/swflash.cab#version=4,0,2,0

Notate che è presente anche la versione!

Questo approccio non garantisce di fatto nulla. In più è specifico per Internet Explorer e con le nuovi versione è tutto da verificare, tra patch e upgrade vari!

Utilizzare uno script (Javascript e/o VBScript) appositamente fornito da Adobe

Questa è forse la soluzione migliore, anche se nasconde anch'essa qualche trappola. L'ambiente di sviluppo Flash permette di creare, all'atto della pubblicazione di un filmato, una pagina HTML con tutto il codice Javascript e VBScript che serve per rilevare la presenza del Plugin (ActiveX) di Flash con una determinata versione.
La falla in questo procedura risiede negli script stessi! Infatti, un browser che abbia disabilitato Javascript, per esempio, non esegue tutti questi magnifici controlli e di conseguenza ci ritroviamo da punta e da capo!

In questo caso è bene ricordarsi di utlizzare il TAG HTML NOSCRIPT, eseguito in automatico dai browser quando Javascript è spento. Il dilemma, al limite, è "cosa inserire all'interno del TAG NOSCRIPT?"!

Recentemente, infatti, molti Web Developer hanno dovuto aggiornare le pagine con contenuto attivo, come Flash o Apple QuickTime, in quanto all'improvviso i browser (nella fattispecie Internet Explorer) hanno iniziato ad emettere un simpatico alert quando trovavano all'interno della pagina un TAG OBJECT! La patch, se così vogliamo chiamarla, è stata immediatamente rilasciata dapperttutto su Internet (anche dalla stessa Adobe, ex Macromedia) e si risolve nell'uso di Javascript per "scrivere" (tramite document.write() ) il codice OBJECT ed EMBED all'interno della pagina.
Questa stessa Patch - ovviamente - non funziona quando Javascript è disabilitato, portando alla frustazione completa gli sviluppatori.

In pratica, ad oggi, quando si deve inserire in una pagina un contenuto attivo (e in questo caso i linguaggi di scripting lato server come PHP, JPS o ASP non ci vengono assolutamente in aiuto, in quanto il problema è proprio lato client; è il nostro browser ad eseguire questo controllo/blocco) si è costretti ad utilizzare uno script. Dreamweaver, infatti, è stato recemenete aggiornato proprio per includere in automatico tale procedura (che per fortuna può essere disabilitata).
Ne deriva, tuttavia, che l'attenzione ai browser con Javascript disabilitato si va a fare benedire. Infatti - ora - si procede sostanzialmente cosi: si usa uno script per scrivere il contenuto attivo (Flash o qualcos'altro) e nel TAG NOSCRIPT si inserisce in codice OBJECT o EMBED esattamente come prima. In questo modo, si pensa, se Javascript è abilitato il filmato appare, ma se Javascript è disabilitato il filmato appare uguale, al peggio con l'avvertimento di "contenuto attivo" (premi barra spaziatrice...) da parte del browser!

Questo metodo non è del tutto corretto. Se si è deciso di inserire il codice Javascript per verificare la presenza di Flash, quando Javascrip è spento non possiamo sapere se è presente o meno. Di conseguenza, in modo più corretto, nel TAG NOSCRIPT andrebbe inserito un alert spiegando che Javascript è disabilitato e quindi non è possibile visualizzare in modo corretto il contenuto attivo della pagina.

Utilizzare un artifizio con un solo filmato Flash

Questo metodo è molto simpatico, e sfrutta alcuni accorgimenti sia lato Flash che lato HTML. Ha il vantaggio di non richiedere (salvo vostra scelta e in particolari casi) l'uso di nessun script, Javascript o altro. In pratica si realizza un primo filmato Flash foo, fittizio, il più piccolo possibile (18x18) e nel primo frame inserite il seguente codice:

Actionscript:
  1. getURL("http://miosito.com/pagina_con_flash.html);

Questo filmato va inserito nella pagina principale (quella di default) del sito: index.html, default.asp, index.php, ecc... Inoltre, e qui viene il bello, proprio su questa pagina inserite il noto META TAG http-refresh in modo che la pagina, dopo 10 secondi ad esempio, venga ridirezionata su http://miosito.com/pagina_senza_flash.html.
Come avrete intuito il trucco sta nel fatto che il filmato foo, se Flash è attivo, carica la pagina iniziale del vostro sito, quella con contenuto Flash. In questo caso siete sicuri che il browser ha Flash attivo proprio perchè il filmato foo sulla pagina iniziale è stato correttamente eseguito.
Nel caso invece che Flash sia disattivo o mancante, dopo 10 secondi (potrebbero essere anche meno, ma occhio alla banda: qualcuno in dial-up potrebbe sempre risentirsi) grazie al META TAG la pagina verrà automaticamente ridirezionata ad una alternativa senza Flash o su una pagina che segnali "Scarica Adobe Flash Player qui".

Nonostante la sua simpatica semplicità questo metodo non esegue un controllo accurato sulla versione di Flash. Inoltre se il Plugin di Flash è installato e attivo la pagina con contenuto attivo viene sostanzialmente caricata immediatamente, quasi da non accorgesene. Tuttavia, in caso di Flash inattivo, 10 secondi per passare alla pagina alternativo potrebbero apparire interminabili.

Non fare nulla

Anche questa è una possibilità! In pratica lasciamo che siano le caratteristiche incorporate del browser a decidere cosa fare. Su alcuni browser e con determinate impostazioni, sarà automaticamente il sistema a chidere di installare il componente mancante, senza costringerci a scrivere codice. Tuttavia, come è ovvio, non abbiamo nessuna sicurezza di quello che accadrà sul browser dell'utente finale. Diciamo che lasciamo al caso e rimandiamo il grosso del lavoro al navigatore del nostro sito.
Per gli utenti esperti questa tecnica può andare bene, come accade con la prima soluzione esposta sopra.

Far scegliere all'utente

Realizzare una pagina introduttiva (index.html, index.php, default.asp, ecc...) dove viene chiesto all'utente di scegliere tra una versione del sito in HTML (puro) e una versione in Flash. Questa pagina dev'essere per forza la pagina principale, quella che vede uno spider di un motore di ricerca ad esempio. Questa tecnica è utilizzata ancora oggi, tuttavia comporta tutta una serie di problematiche a contorno.

Conclusioni

Insomma, un bel pastrocchio per noi sviluppatori. Con l'ultima forzatura - da parte di Microsoft - per garantire la sicurezza relativa all'uso forzato di uno script per inserire contenuti attivi all'interno di una pagina si è proprio toccato il fondo. Non che prima la situazione fosse migliore. Sta di fatto che gestire Flash, ad oggi, è ancora più oneroso. La Adobe dovrebbe dire qualcosa al riguardo. La mossa di Microsoft - visto che FireFox ancora si comporta bene - non migliora certo la vita all'uso di Flash, che trova - soprattutto qui in Italia - ancora difficoltà di implementazione.
Alla fine usabilità e accessibilità potrebbero diventari spettri per i Web Developer. Riuscire ad accontatre tutti, clienti e end-user sembra sempre di più un'impresa quasi impossibile.

Post correlati

Un commento a: “Flash detect: come rilevare Flash”

  1. getAvatar 1.0 Martedì 16 Gennaio, 2007 alle 15:12
    undolog » Blog Archive » Classe Javascript per il rilevamento di Flash ha detto:

    [...] Rilevare Flash e gestire le numerose alternative, come spiegato su Flash detect: come rilevare Flash, non è proprio comodissimo, speriamo almeno che la cosa non andrà a peggiorare con il tempo. browser, Flash, Internet, Javascript, Sviluppo, VBScript [...]

Lascia un commento

TAG XHTML permessi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Usa <pre> per racchiudere codice