Scopo
Indirizzare l'utente in base alla presenza o meno del plugin
Strumenti
moock fpi [f.lash p.layer i.nspector] di Colin Moock | http://www.moock.org/
Metodo
Il moock fpi è una validissima alternativa al Macromedia Flash Deployment Kit, ed è anche molto più facile da usare: ne esistono due versioni, una con lo script nella pagina html di detect, l'altra con gli script in file *.js esterni. Noi vediamo quest'ultima, preferibile per la sua modularità: i file possono essere scaricati presso questo indirizzo.
File di esempio
Come si può vedere dalla figura, abbiamo quattro pagine fondamentali:
- moockfpi-v1.3.5.html: da rinominare in index.html, è la prima pagina che viene vista dal visitatore una volta giunto al nostro sito: contiene tutto il codice per il plugin detect, con i relativi richiami ai files *.js esterni
- movie.html: è la pagina a cui viene reindirizzato il visitatore se possiede il plugin nella versione opportuna
- upgrade.html: la pagina a cui viene reindirizzato il visitatore se possiede il plugin in una versione precedente a quella richiesta
- noflash.html: la pagina a cui viene reindirizzato il visitatore se non ha il plugin, oppure se il rilevamento via script non è possibile
MOOCKFPI-V1.3.5.HTML
Le modifiche da fare al codice della pagina moockfpi-v1.3.5.html sono molto poche:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head><title>moock flash player inspector</title>
<!--
prevent caching in netscape. very important cause
netscape tends to mangle cached code
-->
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<!--
import the fpi logic from external javascript files
-->
<script language="javascript" type="text/javascript" src="fpi-init.js"></script>
<script language="javascript" type="text/javascript" src="fpi-writevb.js"></script>
<script language="javascript" type="text/javascript" src="fpi-main.js"></script>
</head>
<body>
<!--
###########################################################
IF YOU'RE USING PAGE REDIRECTION, FOLLOW THESE INSTRUCTIONS
1) put some content here to tell the user what's going on
while they wait. something like:
"detecting macromedia flash, please wait..."
2) delete everything below this point up to the
end body tag </body>
###########################################################
-->
<script language="javascript" type="text/javascript" src="fpi-swap.js"></script>
<noscript>
<!--
###########################################################
HERE WE PROVIDE ALTERNATE CONTENT FOR NON-SCRIPT-SUPPORTING
BROWSERS OR BROWSERS THAT HAVE THEIR SCRIPTING TURNED OFF...
###########################################################
IF YOU ARE USING PAGE REDIRECT, A META REFRESH GOES HERE.
FOR EXAMPLE:
<meta http-equiv="refresh" content="10;url=noflash.html">
IF YOU ARE USING CONTENT SWAPPING, THE VALUE OF THE
alternateContent VARIABLE SHOULD BE REPEATED HERE.
FOR EXAMPLE:
<img src="altimage.gif" height="400" width="550">
-->
</noscript>
</body>
</html>
Ai commenti in verde si può sostituire un contenuto qualsiasi per avvertire il visitatore che il rilevamento è in corso. Naturalmente, considerato il peso della pagina sotto forma di codice esterno, e che ha solo lo scopo di rilevare la presenza del plugin, una scritta del tipo: "Rilevamento del plugin per Macromedia Flash in corso..."
, è più che sufficiente
La riga rossa, per questo sistema di rilevamento, può essere cancellata, e così il file a cui fa riferimento, fpi-swap.js. Questo ce ne fa risparmiare il peso di download, anche se si tratta di soli 2k.
Nella sezione <noscript>
si può inserire un contenuto alternativo per la pagina nel caso in cui il browser non supporti alcun tipo di script, oppure che questi siano stati disabilitati. Un'immagine, o appunto i tag per il refresh, vanno benissimo.
<meta http-equiv="Refresh" content="10;url=noflash.html">
FPI-INIT.JS
Apriamo il file fpi-init.js
, e modifichiamo questa parte a seconda delle nostre esigenze:
[OMISSIS]
// #############################################
// These are the user defined globals.
// Modify the following variables to customize the inspection
// behaviour. var requiredVersion = 6;
// Version the user needs to view site (max 6, min 2)
// Flag indicating whether or not to load a separate
var useRedirect = true;
// page based on detection results. Set to true to
// load a separate page. Set to false to embed the
// movie or alternate html directly into this page.
// Only set next three vars if useRedirect is true...
// The location of the flash movie page
var flashPage = "movie.html"
// Page displayed if the user doesn't
var noFlashPage = "noflash.html"
// have the plugin or we can't detect it.
var upgradePage = "upgrade.html" // Page displayed if we detect an old plugin
// #############################################
[OMISSIS]
- requiredVersion: la versione del Flash player necessaria alla visualizzazione del sito
- useRedirect: settato come true, indirizza il visitatore alle altre pagine a seconda della presenza o meno del plugin. Se settato come false, cambia il contenuto della pagina stessa (come vedremo più avanti, può inserire un'immagine al posto di un filmato). Per questo tipo di rilevamento, va settato come TRUE.
- flashPage: la pagina da caricare se il plugin è presente e corretto come versione
- noFlashPage: pagina da caricare se il plugin è assente o non può essere rilevato
- upgradePage: pagina da caricare se il plugin è presente in una versione inferiore a quella richiesta per la visualizzazione
Modificati questi due file, il sistema di rilevamento è pronto: se c'è ancora qualcosa da cambiare, sono le pagine esterne, da adattare alle nostre esigenze.