• User

    [HELP] interazione flash e javascript

    Problemone con flash e javascript.
    Devo applicare ad un pulsante flash questo codice javascript:
    document.getElementById("g1").style.visibility = "visible";

    Dunque ho creato un pulsante flash ed ho scritto questo:
    on(release){
    getURL("javascript:document.getElementById('g1').style.visibility =
    'visible'");
    }

    ma non funge, nel senso che mi si apre un'altra pagina vuota con una stringa
    di interrogazione di questo tipo:
    javascript:document.getElementById('g1').style.visibility%20=%20'visible'

    Se invece creo una funzione javascript all'interno dell'head della pagina
    html, funge, ma con una lentezza allucinante. Per questo motivo volevo
    impartire i comandi da flash.

    Infatti ho fatto un semplice test. Eccolo di seguito.
    Sul pulsante flash ho scritto:
    on(release){
    getURL("javascript:alert('test'");
    }

    e quando lo eseguo è rapidissimo.

    Se invece richiamo la funzione javascript da flash così:
    on(release){
    getURL("javascript:miaFunzione()");
    }

    e la funzione javascript appunto è qualcosa del tipo:
    function miaFunzione() {
    alert("test");
    }

    in questo caso è mooooooooooolto più lenta l'esecuzione, qualcosa come un
    paio di secondi o tre. Per questo motivo volevo eseguire javascript da
    flash, ma non riesco nell'intento che vi ho mostrato sopra per la
    visualizzazione di un div.

    Qualcuno mi sa aiutare?

    saluti Polar


  • User Attivo

    Non puoi eseguire javascript da flash!! Puoi solo "lanciare" javascript da flash!! Ecco perché la funzione scritta nell'head, richiamata dal bottone flash, funge e viceversa non funge!!

    Alternativa è usare il comando ExternalInterface.call(xxxxxxx); implementata in AS.3 creando un file test.as che si richiamerà obbligatoriamente alla document Class del file Flash.

    Ad ogni modo ricordati che in AS.2 il modo migliore per fare agire dello javascript in una pagina html attraverso bottone flash non è usando getUrl; bensì fscommand:

    esempio:
    //al bottone associ:

    
    on (release) {
      fscommand ("nuova-finestra", "h**p://w*w.miosito.*t");
    }
    
    

    Dentro <head> </head> dell'html invece scrivi:

    
    <SCRIPT LANGUAGE="JavaScript"> 
    <!-- 
     
    function** ApriFin_DoFSCommand(command, args)**
    { 
    if ( **command == "****nuova-finestra"** )
    { 
    window.open(**args**,'','scrollbars=yes,width=650,height=400');
    }
    }
    //--> 
    </SCRIPT>
     
    <SCRIPT LANGUAGE="VBScript">
    <!-- 
    // Per IE.
    Sub ApriFin_FSCommand(ByVal command, ByVal args)
    call ApriFin_DoFSCommand(command, args)
    end sub
    //-->
    </SCRIPT>
    
    ```Mentre nel tag Object passi l'ID ed il Name della funzione:
     
    

    <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
    codebase="h**p://active.macromedia.com/flash2/cabs/swflash. cab#
    version=5,0,0,0" WIDTH="100" HEIGHT="100" ID="ApriFin">
    <PARAM NAME="MOVIE" VALUE="prova.swf">
    <PARAM NAME="PLAY" VALUE="TRUE">
    <PARAM NAME="LOOP" VALUE="FALSE">
    <PARAM NAME="QUALITY" VALUE="HIGH">
    <PARAM NAME="SCALE" VALUE="showall">

    <EMBED NAME="ApriFin" swLiveConnect="true"
    SRC="prova.swf" SCALE="showall" PLAY="true" LOOP="false"QUALITY="high" WIDTH="100"
    HEIGHT="100" TYPE="application/x-shockwave-flash" PLUGINSPAGE="h**p://w*w.macromedia.com/hockwave/download/
    index.cgi?P1_Prod_ Version=ShockwaveFlash"></EMBED>
    </OBJECT>

     
    E comunque 2 secondi sono pochi e molto relativi... Con una buona adsl magari è pochissimo!!