Si è accennato a Quicktime, ma gli altri formati?
Test eseguiti su diversi browser e sistemi operativi hanno dato un esito parzialmente scontato e assimilabile alla già citata tabella di compatibilità : il problema quindi resta l’universalità dei plug-in.
Oltre a Quicktime, allo stato attuale solo Flash si rivela (vista ormai la sua semi-imprescindibilità) decisamente versatile. L’unica pecca riguarda Linux: il plug-in infatti resta ancora fermo alla versione 7, impedendo la visualizzazione dei filmati ad alta qualità prodotti utilizzando il nuovo codec VP6 della On2.
Windows Media ha il suo “percorso” alternativo che abbiamo già citato; occorre invece soffermarsi su Real.
Non staremo a discutere ora della corretta visualizzazione dell’interfaccia, quanto invece di un comportamento legato alle dimensioni “ereditate” dal layout SMIL.
Il plug-in utilizzato nei test è riferito alla versione 10.5 di Real Player per Windows. Tale plug-in non ha impostato nessun parametro peculiare di fit o di scale; esiste il maintainaspect che però sembra avere caratteristiche diverse dai suoi “colleghi”.
Il filmato, durante la sua esecuzione, si ridimensiona armonicamente ad ogni aggiustamento dei caratteri tramite browser. Ma ciò avviene solo in corso di esecuzione.
Se si prova a ridimensionare i caratteri prima di ogni nuova esecuzione il plug-in non si adatta all’area ingrandita e propone invece la struttura originaria del layout SMIL.
Il comportamento risulta essere problematico non solo a livello di percezione visiva ma soprattutto di funzionalità.
Infatti l’utente si vede costretto ad effettuare un nuovo fastidioso ridimensionamento per ripristinare la situazione di ingrandimento.
Al problema si è cercato di dare un “workaround” di certo un lavoro in fieri ma che comunque può in qualche modo risultare utile. E ancora una volta ci affideremo alle proprietà CSS.
Posto il fatto che per riavviare l’esecuzione occorra premere il tasto “play” sulla barra di comandi del plug-in, è ragionevole pensare al passaggio fisico del mouse sull’elemento; a questo punto proviamo a “forzare” il ripristino tramite la pseudo-classe :hover.
#mmobj:hover object {width: 100.01%;}
In questo modo ogni volta che ci troviamo sull’area del <div>
contenitore, diamo a tutti gli <object>
al suo interno una larghezza pari a 100% (quella precedentemente impostata) + uno 0.01% sufficiente a scatenare il ripristino.
Purtroppo Internet Explorer (almeno fino alla versione 7, ancora da testare) non supporta l’hover su tutti gli elementi, quindi per emulare tale funzione occorre (ahimé) ricorrere a un piccolo javascript (la cui struttura è simile a quella per simulare l’hover sui paragrafi), considerando il fatto che IE fallisce lo “zoom” automatico anche al caricamento del filmato.
Quindi occorre che sia in fase di caricamento della pagina che di replay manuale del filmato sia garantito il corretto ridimensionamento del video e dei sottotitoli.
Visto che tale espediente occorre solo a Internet Explorer, possiamo caricare nell’head della pagina HTML un file .js esterno affidandoci ai commenti condizionali:
<!--[if IE]><script type="text/javascript" src="../js/real.js"></script><![endif]-->
Prima di osservare il javascript bisognerà effettuare due aggiornamenti nel codice della pagina, dapprima assegnando un ID al plug-in:
<object id="ram" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="400" height="280">
e poi creando una classe CSS delegata a simulare l’hover:
#mmobj object.scaled {width: 100.1%;}
(da notare che IE non “reagisce” ad una percentuale inferiore allo 0.1%)
Il javascript quindi verificherà l’associazione della classe scaled al plug-in sia in fase di caricamento che al passaggio del mouse sullo stesso:
//avvia il ridimensionamento al caricamento della pagina
onload = function() {scaleToFit();}
function scaleToFit() {
obj = document.getElementById("ram");
//assegna la classe "scaled" con un piccolo delay per il caricamento del plugin
setTimeout('obj.className = "scaled";', 1000);
o = document.getElementById("mmobj").getElementsByTagName("OBJECT");
for (k=0; k<o.length; k++) {
//assegna all'evento "onmouseover" il ridimensionamento associando la classe
o[k].onmouseover = function() {obj.className = "scaled";}
//assegna all'evento "onmouseoout" il ripristino della larghezza, annullando l'associazione
o[k].onmouseout = function() {obj.className = "";}
}
}
Va sottolineato che questo “artificio” funziona correttamente solo dalla versione 5.5 di Internet Explorer.
Inutile rimarcare gli svantaggi di usare javascript per correggere il problema, ma di fatto il suo mancato utilizzo (qualora si disabilitino gli script) non impedisce comunque di poter ridimensionare il filmato.
Da non sottovalutare inoltre la possibilità che l’utente si muova rapidamente dall’area dei plug-in prima che il filmato sia completamente caricato, impedendo un corretto intercettamento dell’evento.
Naturalmente le questioni aperte restano molte (usabilità e conformità delle interfacce dei plug-in, qualità e scalabilità dei video alle diverse connessioni, etc.), ma ciò è uno stimolo in più per verificare come seguendo il percorso presente e futuro degli standard si possa immaginare un web creativo e al tempo stesso aperto, senza barriere.