Esistono molti sniffer per rilevare la presenza e la versione del flash player installato.
Uno dei più usati è stato quello di moock.org, ma anche Adobe/Macromedia ha realizzato un detection kit di facile utilizzo.
In questo post riporto una idea alternativa di sniffer, tratta dal prezioso libro di Sham Bangal, "Flash Trucchi e Segreti" (scritto per Flash MX e MX 2004, continuo ancora oggi ad attingere da quel libro nonostante il susseguirsi di versioni e aggiornamenti : ) ).
L'hack si basa sull'utilizzo di un client-pull attraverso il meta tag "refresh", non utilizza javascript, ed è facile da configurare!
Di cosa abbiamo bisogno:
1 - La pagina indice del sito deve contenere nell'header il tag
< meta http-equiv="refresh" content="5" url="noflash.html">
e un file swf con delle azioni per caricare la pagina del sito in flash
2 - Dobbiamo creare la pagina noflash.html all'interno della quale dare le istruzioni adeguate per scaricare il flash player, oppure visualizzare la versione html del sito
In pratica, quando ci si collega alla index, l'swf tenta di eseguire il getURL, se non vi riesce, dopo 5 secondi, entra in azione il client-pull collegando l'utente a noflash.html
Prepariamo il file flash
L'utilizzo della semplice azione getURL() potrebbe non essere sufficiente, pensiamo ad esempio alla necessità nel vostro sito di riprodurre un video. Sebbene getURL() sia supportato dalla versione 2 del player, il video lo è dalla versione 5. Indirizzeremmo pertanto l'utente sul sito flash anche se ha installato versioni antecedenti alla 5!
Useremo quindi la variabile d'ambiente $version supportata fin dalla versione 4 del player, quindi più sicura del metodo getVersion() e System.capabilities.version, supportati solo dalle versioni 5 e 6.
In tutti i casi, otterremo una stringa che riporta la piattaforma e la versione, esempio
"WIN 6,0,21,0".
La versione del player si trova in corrispondenza della posizione 4, ovvero il 5° carattere separato da virgola.
Supponendo di voler far accedere al sito flash solo gli utenti che abbiano installato una versione >= della 5, andremo a scrivere il seguente codice:
var V:String=eval($version);
if(V.substr(4,1)>=5){
getURL(sitoflash.html);
}else{
getURL(sitonoflash.html)
}
Da notare che con questo procedimento, e diveramente dagli script classici in javascript, non dovremo preoccuparci di andare ad aggiornare il file flash man mano che vengono rilasciate nuove versioni del player!
Grazie Sham!
P.S
Per maggiori info consultare anche le seguenti technote di adobe:
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14294&sliceId=2
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_15507
Uno dei più usati è stato quello di moock.org, ma anche Adobe/Macromedia ha realizzato un detection kit di facile utilizzo.
In questo post riporto una idea alternativa di sniffer, tratta dal prezioso libro di Sham Bangal, "Flash Trucchi e Segreti" (scritto per Flash MX e MX 2004, continuo ancora oggi ad attingere da quel libro nonostante il susseguirsi di versioni e aggiornamenti : ) ).
L'hack si basa sull'utilizzo di un client-pull attraverso il meta tag "refresh", non utilizza javascript, ed è facile da configurare!
Di cosa abbiamo bisogno:
1 - La pagina indice del sito deve contenere nell'header il tag
< meta http-equiv="refresh" content="5" url="noflash.html">
e un file swf con delle azioni per caricare la pagina del sito in flash
2 - Dobbiamo creare la pagina noflash.html all'interno della quale dare le istruzioni adeguate per scaricare il flash player, oppure visualizzare la versione html del sito
In pratica, quando ci si collega alla index, l'swf tenta di eseguire il getURL, se non vi riesce, dopo 5 secondi, entra in azione il client-pull collegando l'utente a noflash.html
Prepariamo il file flash
L'utilizzo della semplice azione getURL() potrebbe non essere sufficiente, pensiamo ad esempio alla necessità nel vostro sito di riprodurre un video. Sebbene getURL() sia supportato dalla versione 2 del player, il video lo è dalla versione 5. Indirizzeremmo pertanto l'utente sul sito flash anche se ha installato versioni antecedenti alla 5!
Useremo quindi la variabile d'ambiente $version supportata fin dalla versione 4 del player, quindi più sicura del metodo getVersion() e System.capabilities.version, supportati solo dalle versioni 5 e 6.
In tutti i casi, otterremo una stringa che riporta la piattaforma e la versione, esempio
"WIN 6,0,21,0".
La versione del player si trova in corrispondenza della posizione 4, ovvero il 5° carattere separato da virgola.
Supponendo di voler far accedere al sito flash solo gli utenti che abbiano installato una versione >= della 5, andremo a scrivere il seguente codice:
var V:String=eval($version);
if(V.substr(4,1)>=5){
getURL(sitoflash.html);
}else{
getURL(sitonoflash.html)
}
Da notare che con questo procedimento, e diveramente dagli script classici in javascript, non dovremo preoccuparci di andare ad aggiornare il file flash man mano che vengono rilasciate nuove versioni del player!
Grazie Sham!
P.S
Per maggiori info consultare anche le seguenti technote di adobe:
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14294&sliceId=2
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_15507


0 commenti:
Posta un commento