2010-02-21 15 views
5

Ho un piccolo swf di test per provare a chiamare una funzione ActionScript (3.0) da JavaScript. Sto usando la documentazione di Flash come riferimento: (http://www.adobe.ca/livedocs/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000340.html) Al caricamento della pagina mi sono presentato con un errore di Flash Player:Errore di sicurezza durante il tentativo di richiamare la funzione ActionScript di JS

SecurityError: Error #2060: Security sandbox violation: ExternalInterface caller file: c:/externalinterface.swf cannot access file: c:\myhtml.html 
at flash.external::ExternalInterface$/_initJS() 
    at flash.external::ExternalInterface$/addCallback() 
    at externalinterface_fla::MainTimeline/frame1() 

Questo è il codice ActionScript:

import flash.external.ExternalInterface 

function callMe(name:String):String{ 

    return "busy signal"; 

    } 

    ExternalInterface.addCallback("myFunction",callMe); 

E il JS :

<script type="text/javascript" language="javascript"> 
    function callSwf() { 
     var callResult = flashObject.myFunction("Nick"); 
     alert(callResult); 
    } 

</script> 

Infine l'oggetto HTML:

<object width="550" height="400"> 
<param name="movie" value="externalinterface.swf"> 
<embed src="externalinterface.swf" width="550" height="400"> 
</embed> 
</object> 

Come aggirare questo?

+3

nel tuo html permetti l'esecuzione dello script? params.allowscriptaccess = "always" –

risposta

6

se si esegue il test online o localhost, dovrebbe funzionare se si ha il parametro allowcriptaccess = "true" come dice dome. Se si esegue il test con il protocollo file: //, è necessario consentire l'unità nelle opzioni di sicurezza di Flash Player.

+0

Ho aggiunto il percorso swf locale nelle mie impostazioni di sicurezza globali e l'errore è scomparso. – Nick

+4

Per chiunque altro, le impostazioni di sicurezza globali sono modificate all'indirizzo http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html – Patrick