Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Javascript e Flash - Problema con IE

    Ciao a tutti!
    Sto cercando di fare tutto da sola, spulciando il forum alla ricerca di risposte ai miei problemi (sono una dilettante di javascript), ma questo non so nemmeno come cercarlo, nè se sto postando sul forum giusto...

    Sto facendo in modo che, leggendo un xml esterno, la pagina carichi il popup solo se c'è un'offerta attiva. Per evitare i popup ho giocato sulla visibilità di un livello.
    Trattandosi di un sito in Flash, per evitare che il popup compaia prima della fine dell'introduzione animata, chiamo il javascript da dentro Flash, con un semplice

    codice:
    getURL("JavaScript:checkOfferta();void(0);");
    Premesso che il Flash viene caricato via javascript con il AC_RunActiveContent, il mio script funziona perfettamente tutto su tutti i browser, eccetto che su IE (sia 6 che 7), che si incasina e blocca l'esecuzione del filmato Flash.
    L'errore me lo indica alla riga 21, ma alla riga 21 c'è solo una impostazione css... :S
    Fatti vari tentativi ho scoperto che la riga che gli dà problemi è quella segnata in rosso e la situazione non migliora nemmeno se scrivo document.getElementById('offerta');

    Temo sia un problema di ordine, per cui vi indico le cose in ordine:

    Al primo posto ci sono gli script di visualizzazione del popup:
    codice:
    <!--
    function inizializza(){
      //variabili browsers
      if (document.all) {
        documento="document.all";
        parA="[";
        parB="]";
      }
      else if (document.layers){
        documento="document.layers";
        parA="[";
        parB="]";
      }
      else if (document.getElementById) {
        documento="document.getElementById";
        parA="(";
        parB=")";
      }
      offerta = eval(documento+parA+"'offerta'"+parB); 
    }
    
    function resize(img, tit) {
    	
    	//recupero le dimensioni dell'immagine
    	var myImage = new Image();
    	myImage.src = 'http://www.miosito.it/images/offerte/'+ img;
    	var w = Number(myImage.width) + 40;
    	var h = Number(myImage.height) + 80;
    
    	//imposto le dimensioni del DIV che contiene l'immagine
    	offerta.width = w;
    	offerta.height = h;
    	offerta.style.display = "block";
    }
    
    function chiudi() {
            //chiusura popup
    	offerta.style.display="none"
    }
    
    function apriOfferta() {
    	//modifico le dimensioni della finestra di popup
    	var h = screen.availHeight;
    	window.open('http://www.miosito.it/offerta_del_mese.html','popup','scrollbars=yes,resizable=yes,width=720,height='+ h +',status=no,location=no,toolbar=no');
    	return false;
    }
    
    //-->
    Di seguito ho inserito gli script di caricamento del flash con _RunActiveContent, e infine, via ASP leggo l'XML e se l'offerta è attiva, con un response.write() imposto lo script che verrà poi invocato da Flash, ovvero:

    codice:
    function checkOfferta() {
    	checkOfferta = true;
            inizializza();
    	resize('volantino.jpg', 'Offerta Speciale');
    }
    testato su tutti gli altri browser funziona... qualche idea?...
    Grazie!

  2. #2
    Dimenticavo una cosa importante!
    La parte di Flash...

    Il filmato infatti si blocca al momnto in cui flash legge per la prima volta il richiamo al Javascript.
    Questo è inserito all'interno di una funzione per il fadein della grafica che gestisce diversi oggetti. Quando viene invocato per la prima volta al fadein del payoff, la riproduzione si pianta, anche se la funzione viene invocata solo al fadein dell'homepage.
    Per intenderci:

    codice:
    /* funzioni per l'effetto Alpha */
    function fadeIn(mc) {
    	if (mc._alpha < 100)  {
    		mc._alpha += 1; 
    	} else {
    		clearInterval(y); 
    		mc._alpha = 100;
    		if (mc._name == "home") {
    			getURL("JavaScript:checkOfferta();void(0);");
    		}
    	}
    }

  3. #3

  4. #4
    Ho fatto un po' di prove e ho risolto il problema del Flash che si pianta.
    Visto che altre persone potrebbero avere il mio problema, mi sembra utile esporre la soluzione.
    Infatti, usando AC_RunActiveContent.js, bisogna aggiungere la voce "wmode" ai vari parametri della function AC_GetArgs, in quanto wmode non è contemplato e explorer si pianta.

    Risolto il problema di Flash, ora è comparso quello della visualizzazione del popup sempre su IE...


    Mentre tutti gli altri browsers lo visualizzano correttamente, IE
    1. non lo ridimensiona
    2. lo mette in secondo piano, nonostante wmode=transparent e z-index= 1 (il popup ha z-index= 100)
    3. non imposta gli attributi di stile che ho dato ovvero un png grigio semi-trasparente di sfondo a volte lo mette a volte no e se lo mette lo raddoppia

    e la cosa più bella è che se faccio aggiorna/aggiorna/aggiorna non viene visualizzato una volta uguale all'altra!!!

    a volte mette la foto a volte no, a volte mette lo sfondo e a volte no, a volte mette la crocetta di chiusura popup a volte no...
    Il problema alla riga rossa l'ho risolto aggiungendo var offerta = ...
    (perchè poi? e se avessi voluto rendere la variabile globale?... mah!)
    ma temo sia proprio questo il problema...

    Questa la pagina a cui potete vedere gli scherzetti:
    http://www.6sensi.com/prova.asp

    Vi prego, aiutatemi perchè io non so più dove sbattere la testa!

  5. #5
    In attesa che qualcuno si prenda a cuore il mio caso, continuo a fare prove...

    Per individuare l'errore, ho deciso di escluderli uno alla volta e per far questo sono partita da zero, ovvero ho pubblicato l'HTML GENERATO DA FLASH CON L'IMPOSTAZIONE WMODE=TRANSPARENT paro paro come me l'ha scritto lui (ver. 8, ma ho provato anche la 9)
    E NON FUNZIONA SU EXPLORER!!!!

    probabilmente la modifica (errata) che avevo fatto io al file AC_RunActiveContent.js faceva ignorare a IE il parametro wmode, per cui il file si vedeva, ma in primo piano rispetto al popup

    a questo punto non so più che fare. leggo ovunque che wmode=transparent funziona(va) solo su IE, mentre a me funziona dappertutto fuorchè su IE...

  6. #6
    Ho risolto il problema...
    è lo script di flash che interagisce malamente col wmode transparent, per cui posterò sul forum di as la questione, ma mi rimangono dei dubbi javascript che mi piacerebbe chiarire (sempre ammesso che non continui a parlare al vento senza risposta come è successo finora...):

    - l'uso di var
    - perchè il comando offerta.width = w + 40; non mi impostava la larghezza, mentre offerta.style.width = w + 40; sì. Questo vuol dire che gli stili hanno la meglio sul javascript? e che il display: block; vale più di una larghezza impostata via javascript?

    an passant ho scoperto che il css di explorer non carica i png trasparenti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.