ho aggiunto uno sfondo animato ai campi di un form mail, la parte di codice vitale per l'animazione è la seguente :
codice:
classChange(document.getElementById('Cbig'),'scriptactive','noscript')
var animElements = document.getElementById('Cbig').getElementsByTagName('textarea');
for(var i=0; i<animElements.length; i++) {
animElements[i].bgAnim = {
iPos:[0,0],
pUnit:['px','px'],
cFrame:0,
mFrame: 14,
dPos:[0,-200],
mSec:15
}
animElements[i].onfocus = backPosAnimF;
animElements[i].onblur = backPosAnimR;
}
tutto è andato a buon fine finchè non ho scoperto un'interessante feature di Explorer che interpreta male le istruzioni sul background di questi elementi, per cui se si verifica un overflow invece di restare fermo si scrolla anche il background, utilizzare l'attachment fixed peggiora solo le cose perchè l'immagine non si muove più in caso di ridimensionamento della pagina, ho eseguito quindi la soluzione proposta quì di inserire la textarea trasparente dentro un div che contiene lo sfondo per evitare il problema.
il trucco funziona, solo che il mio background deve animarsi quando riceve il focus dell'utente, ma la textarea, seppur trasparente, fà da scudo invisibile per il div sottostante di cui dovrebbe animarsi il background ricevendo il focus
Il codice sopra fà in modo che quando l'elemento specificato per l'animazione subisce un determinato evento questo attiva l'animazione sull'elemento stesso (animElements), ovvero cliccando(focus) sul div si attiva l'evento e l'animazione del background del div stesso.
Quello che mi serve (ma che non riesco proprio a ottenere) è bypassare il focus alla textarea e fare in modo che in quel momento si attivi l'animazione del background dell'elemento div e viceversa per il blur, ho provato come segue :
codice:
classChange(document.getElementById('Cbig'),'scriptactive','noscript')
var animElements = document.getElementById('Cbig').getElementsByTagName('div');
for(var i=0; i<animElements.length; i++) {
animElements[i].bgAnim = {
iPos:[0,0],
pUnit:['px','px'],
cFrame:0,
mFrame: 14,
dPos:[0,-200],
mSec:15
}
document.getElementsByTagName('textarea').onfocus.animElements[i] = backPosAnimF;
document.getElementsByTagName('textarea').onblur.animElements[i] = backPosAnimR;
}
e anche altre combinazioni ma niente...
la pagina incriminata si trova quì