Home Page

30 Maggio 2007

Installare IE7 e mantenere IE6

È un problema che assilla molti sviluppatori che come me si preoccupano della compatibilità delle proprie applicazioni web sui più diffusi browser (Internet Explorer, Firefox, Opera, Safari ecc.) e che hanno sempre un occhio di riguardo per le nascenti tecnologie e il rilascio di nuove versioni. Internet Explorer 7, fino al rilascio di Windows Vista era un aggiornamento di Windows che molti avevano evitato di compiere per ovvi motivi di diffusione, stabilità e affidabilità. In effetti sono ancora moltissimi gli utenti che utilizzano IE6, ma dal momento che Vista è in vendita non si possono trascurare anche coloro che usano la versione 7.

Il problema è che se installate IE7 su Windows XP automaticamente viene rimosso IE6.
Quindi cosa fare a parte installare IE7 o Vista su un altro PC e tenere IE6 su Win XP?

Molti sviluppatori si sono dati da fare in questo campo e recentemente ho scoperto un paio di interessanti soluzioni anche se non perfette:

  • Installazione multipla di IE
    In queste pagine trovate le indicazioni e l’installer per chiunque abbia già installato IE7 da Windows update su Win XP per installare IE6 e le versioni precedenti. Attenzione però perché Internet Explore (anche in versione obsoleta) è comunque di proprietà di Microsoft!
  • IE7 versione standalone
    Questo è invece per tutti coloro che ancora non hanno installato IE7 su Win XP. Leggete comunque le limitazioni a questo approccio che rispetto al precedente potrebbe rivelarsi più difficoltoso.

Pubblicato in Browser | Nessun Commento »

31 Gennaio 2007

Flash e gli screenreaders: accessibilità in Flash?

La documentazione di Flash descrive il funzionamento del comando: System.capabilities.hasAccessibility come segue: “Un valore Booleano (true/false) che è true se Flash Player è in funzione all’interno di un “ambiente” che supporta la comunicazione tra Flash Player e le periferiche di accessibilità. Falso in tutti gli altri casi.”
Il problema sorge dall’interpretazione di questa descrizione che personalmente non ho mai inteso nel suo vero significato… fortunatamente non ne ho avuto mai una reale necessita all’interno dei progetti di *webgriffe, ma mi ci sono scontrato facendo un piccolo test negli spazi che il team si concede per la sperimentazione.

L’ambiente è lo spazio in cui Flash Player è contenuto. Può quindi essere un Browser o l’applicazione standalone. L’unico ambiente che restituisce True al comando System.capabilities.hasAccessibility è Internet Explorer in Windows. Il comando Actionscript controlla se l’ambiente supporta il metodo di comunicazione Microsoft Active Accessibility (MSAA), che è lo standard di comunicazione tra tecnologie per l’accessibilità (screenreader e periferiche varie) e le applicazioni su piattaforma Windows. Quindi è uno standard in Windows e attualmente non significa che se MSAA è supportato esista realmente una periferica/tecnologia per l’accessibilit à collegata al PC e/o che questa sia attiva. Cosa vuol dire questo quindi? Che dobbiamo guardare un po’ più avanti di questo comando quando vogliamo addentrarci nel campo dell’accessibilità e del controllo dell’esistenza di tecnologie collegate al sistema. Ci viene in aiuto la proprietà Accessibility.isActive() che rappresenta la miglior soluzione. Questo metodo restituisce true se Flash Player sta comunicando con MSAA.

Se volete fare il seguente test - http://www.webgriffe.com/demo/accessibility/ - otterrete per il primo comando un true se siete in IE su Windows e false in tutti gli altri casi… ad oggi: fateci sapere se trovate altri casi in cui viene visualizzato il valore true. Per la seconda proprietà otterrete un true solo nel caso abbiate una tecnologia per l’accessibilità collegata e attiva.

Pubblicato in Flash, Browser, Actionscript | Nessun Commento »

16 Dicembre 2006

getURL in Flash projector

Utilizzando il comando getURL() per aprire un file HTML da un SWF caricato tramite lo standalone Player di Flash (com ad esempio un projector EXE su un CD-rom) abbiamo riscontrato difficoltà di funzionamento soprattutto quando il browser predefinito è Firefox. Invocando il getURL(”modules/mia_pagina.html”) non viene aperta la pagina richiesta… vediamo perché…

Prendiamo in considerazione la situazione in cui un Flash projector (pubblicato come tale da Flash) contiene una chiamata di tipo getURL() a un file HTML: in questo modo non ci addentriamo nella casistica degli SWF in locale per i quali entra in ballo tutta la questione riguardante le security restrictions introdotte nelle varie versioni. Un movie Flash pubblicato come eseguibile invece non è soggetto a queste restrizioni di sicurezza come descritto nella documentazione ufficiale.
Detto questo procediamo con il nostro esempio e vediamo cosa succede quando un pulsante (che ha come instance name “myButton”) contenuto nel Flash projector invoca un getURL, o l’equivalente navigateToURL in AS3.0, a una pagina HTML:

myButton.onRelease = function() {
	getURL("modules/mia_pagina.html", "_blank");
};

Se il browser predefinito sul computer dell’utente è Internet Explorer, o una versione di Netscape/Mozilla precedente Firefox, tendenzialmente il comando avrà effetto e si aprirà la pagina “mia_pagina.html”.
Però se il browser di default è Firefox allora succedono cose strane e imprevedibili: sulle piattaforme testate ad esempio capita che Firefox si apre con due tab di cui uno _blank e uno in cui viene visualizzata la pagina di ricerca di default (ad esempio Google).
Un bel problema! Così sono partite le miee ricerche e i test più svariati fino a capire che non si tratta di un bug del Flash Player ma di Firefox, o meglio, di come Firefox gestisce le Url passate sulla command line.
Chiudete tutti i browser e provate a scrivere sulla command line il comando:

firefox -url "http://www.yahoo.com/|http://www.google.com/"

Noterete che viene aperto Firefox con due tab: una per Yahoo e una per Google.
Torniamo a Flash ora… quando in un projector invochiamo un getURL(”modules/mia_pagina.html”, “_blank”), quindi a una pagina relativa, il Flash Player traduce questo path in assoluto. Se ad esempio il projector è su un CD-dom identificato con la lettera D, e il file mia_pagina.html posizionato nella directory “modules”, il path assoluto tradotto dal Flash Player sarà del tipo:

file:///D|\modules\mia_pagina.html

Notate che è presente in questa stringa il carattere “|” (che si legge “pipe”) ed è proprio qui il problema. Quando Firefox riceve questo path, come nell’esempio fatto per la command line, cerca di aprire due tab e visualizzare le pagine specificate prima e dopo il “pipe”. Nel nostro caso tenterà di aprire senza successo le pagine “file:///d:” e “\modules\mia_pagina.html” che, non essendoci corrispondenza con reali pagine, provocano l’errore.

La soluzione è quindi quella di tradurre il path assoluto da inviare al browser in modo da evitare la presenza del carattere “pipe” e l’insorgere del problema, che ricordiamo è limitato solo agli utenti Firefox… ma come ben sappiamo sono (siamo) una crescente realta da non sottovalutare.
Per fare questo ci viene in aiuto la proprietà _url di AS2.0 o la proprieà url di loaderInfo in AS3.0). Per un SWF in una pagina web questa proprietà corrisponde alla url del file SWF, mentre per un SWF standalone in locale come un projector/eseguibile questo restituisce il path assoluto “file:///” dell’SWF nel file system.

Facciamo una prova e creiamo un projector SWF con un textField sullo stage a cui diamo come instance name “tf”:

// AS2
tf.text = this._url;

// AS3
tf.text = this.loaderInfo.url;

Facendo un test nel nostro textField apparirà un testo tipo: “file:///D|/projector.exe”.
Quindi quello che dovremo fare nel nostro caso è sostituire il “pipe” con “:” e il nome del projector con il percorso relativo al file HTML da aprire. Ci facciamo aiutare da indexOf() e lastIndexOf() per individuare rispettivamente la posizione del carattere “pipe” | e dellultimo slash (/) che chiude il path del projector. Ed ecco il codice risultante in Actionscript 2.0:

 

var swfUrl:String = _root._url;
var lastSlashIndex:Number = swfUrl.lastIndexOf("/");
var pipeIndex:Number = swfUrl.indexOf("|");
var baseUrl:String;
if (pipeIndex >= 0) {
	baseUrl = swfUrl.substring(0, pipeIndex);
	baseUrl += ":";
} else {
	baseUrl = "";
}
baseUrl += swfUrl.substring(pipeIndex + 1, lastSlashIndex + 1);
myButton.onRelease = function() {
	var targetUrl:String = baseUrl + "modules/mia_pagina.html";
	getURL(targetUrl, "_blank");
};

Pubblicato in Flash, Browser, Actionscript | 2 Commenti »

4 Novembre 2006

Flash Switcher per Firefox (Mac, PC)

Anche io come milioni di persone ho disertato Internet Explorer per passare a Firefox e ogni giorno si rivela il browser più utile per gli sviluppatori web grazie ai tanti Add-ons in circolazione.
Tra i più recenti vorrei segnalare l’utilissimo Flash Switcher scritto da Alessandro Crugnola meglio conosciuto come Sephiroth.
Flash Switcher è disponibile nella versione PC e Mac e aggiunge un pulsante nell’angolo in basso a destra del browser che permette di cambiare al volo la versione del Flash Player utilizzato (dalla 2 alla 9).

Questi i link per scaricare e installare l’Add-on:

Un must per ogni Flash Developer a mio parere!

Pubblicato in Flash, Browser | Nessun Commento »

TROVA:

Abbonati ai Feed RSS di questo Blog Abbonati ai Feed RSS di questo Blog Informazioni su questo blog Informazioni su questo blog Scarica lo screen saver di shines Scarica lo screen saver di shines