Firefox Bug Flash wmode transparent: Ecco come risolvere

- Letture: 3.375

L’altra sera leggevo un commento scritto da Marcello, un lettore di JuliusDesign che mi chiedeva come risolvere il Bug di Firefox riguardo la gestione della famosa chiocciola @ in Flash per un campo di input con stage impostato wmode=transparent

Succede infatti durante l’inserimento della chiocciola (@) in un campo di input gestito con la trasparenza in flash, la trasformazione del carattere nella o accentata (ò)

La prima soluzione immediata è quella di non usare la trasparenza in Flash, quindi nel nostro codice HTML eliminare i parametri riferiti al wmode=transparent

Facile Julius, ma se ho necessità di utilizzare la trasparenza in Flash come devo fare?

Non c’è una vera e propria soluzione, ma possiamo risolvere il problema con un paio di righe in Actionscript mantenendo sempre la trasparenza in flash

Andiamo a vedere l’esempio in Flash e come procedere:

Una delle soluzioni che vi consiglio è quella di usare lo stesso ActionScript utilizzando la funzione Key.getAscii(); per intercettare la pressione del tasto ò

Ecco il codice Actionscript 2:

keyPresser = new Object();
keyPresser.onChanged = function(my_text:TextField) {
if (((Key.getAscii())) == 242) {
my_text.text = my_text.text.slice(0, my_text.text.length-1)+"@";
trace("Add @");
}
};
Key.addListener(keyListener);
my_text.addListener(keyPresser);

Vediamo il codice nei dettagli:

Creo un nuovo oggetto keyPresser e dichiaro una funzione al cambiamento del contenuto referente al mio campo di input my_text

keyPresser = new Object();
keyPresser.onChanged = function(my_text:TextField) {

Inserisco una condizione con la quale verifico se è stato premuto il carattere ò in ASCII 242 e lo sostituisco con il carattere chiocciola @

if (((Key.getAscii())) == 242) {
my_text.text = my_text.text.slice(0, my_text.text.length-1)+"@";
trace("Add @");
}
};

Infine associo la funzione al mio testo con addListener

Key.addListener(keyListener);
my_text.addListener(keyPresser);

Purtroppo il comando di funzione AltGr non viene associato e ha come valore 0, per questo non si puo inserire una condizione solo sulla pressione di entrambi i tasti

Ricordiamo di incorporare i caratteri speciali come quelli di punteggiatura in cui vi è la famosa chiocciola

Ovviamente se ora la chiocciola sarà inseribile, meno lo sarà il carattere ò in quanto verrà automaticamente sostituito

Da ricordare l’inserimento della chiocciola anche con la seguente combinazione di tasti SHIFT+2

Scarica il sorgente
Guarda il Tutorial

Stratega, Docente, Speaker con più di 12 anni di esperienza in strategie creative multicanale. Oggi sono Partner & Chief Innovation Officer di ThinkingHat, Innovation Studio specializzato in tecnologie emergenti per aziende e brand audaci.

20 Commenti

  1. Deja_rulez

    Bella julius per la soluzione,

    Se non sbaglio con il nuovo flash player e firefox2 è stato risolto il problema quindi dovrebbe funzionare anche con il wmode transparent.

    Altra cosa, importante (che penso sicuramente tu conosca già) è il fatto di limitare l’utilizzo del wmode allo stretto necessario visto che influisce in maniera consistente sulla pesantezza del filmato flash a livello di utilizzo cpu. [correggimi se sbaglio]

    ciaaps!

  2. Michele.77

    Davvero notevole! Grazie
    PS. Che bello quando queste chicche di saggezza erano elargite con più frequenza ;)

  3. Marcello

    Grazie 1000 Julius.. prima della mia segnalazione avevo risolto inserendo 2 campi con al centro la @.. finalmente posso eliminare questa scorciatoia.
    Grazie ancora!

  4. simoegio

    c’è un modo (magari AS2) per risolvere il problema indipendentemente dalla lingua della tastiera usata? ora come ora funziona solo su quella italiana visto che il codice ASCII di riferimento è quello

  5. @simoegio per ora ho trovato solo questa soluzione

    @Michele ciao dall’HTML si nota chiaramente che utilizzi

    <param name="wmode" value="transparent">

    Prova a toglierlo vedrei che il problema non ci sarà più

  6. my god .. sto proprio fuso ahahah stavo operando su una pagina diversa aah index.htm invece di html .. e in quella lo avevo già tolto XD …. mammamia grazie … certe volte ci si perde in un bicchiedere d’acqua XD
    bye bye mike

  7. Scusa per l’ignoranza, ma non essendo un esperto di programmazione, mi sono affidato al sito http://www.wix.com per creare il mio sito in flash. Come faccio a risolvere il problema della @ non potendo accedere al codice della pagina (o almeno credo che non si possa)!

  8. A dimenticavo, non so se è importante, ma questo bug con firefox e chrome mi capita solamente se inserisco nel mio sito in flash un widgets html che mi porta a un altro sito (ad esempio il pulsante condividi su facebook oppure il codice di un contatore visite). Altrimenti mi funziona tutto!

Commenti