5

I have a little test swf to test calling an ActionScript(3.0) function from JavaScript. I am using the Flash documentation as a reference: (http://www.adobe.ca/livedocs/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000340.html) When the page loads I am presented with a Flash Player error:

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()

This is the ActionScript:

 import flash.external.ExternalInterface

function callMe(name:String):String{

    return "busy signal";

    }

    ExternalInterface.addCallback("myFunction",callMe);

And the JS:

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

</script>

Finally the HTML Object:

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

How do we work around this?

Nick
  • 19,198
  • 51
  • 185
  • 312

1 Answers1

6

if you test online or localhost, it should work if you had the param allowscriptaccess="true" like dome said. If you are testing with file:// protocol you need to allow your drive in the flash player security options.

RafH
  • 4,504
  • 2
  • 23
  • 23
  • I added the local swf path in my global security settings and the error is gone. – Nick Feb 21 '10 at 22:04
  • 4
    For anyone else, your global security settings are edited at http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html – Patrick Sep 09 '12 at 05:15