문제

I am trying to execute flex function from javascript with ExternalInterface and addCallback:

<s:Application 
  xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:s="library://ns.adobe.com/flex/spark" 
  xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="initApp()">

import flash.external.*;
import flash.net.FileReference;

public function initApp():void {
  ExternalInterface.addCallback("sendTextFromJS", receiveTextFromJS);
}

public function receiveTextFromJS(s:String):void {
  l1.text = s;
  var myFileReference:FileReference = new FileReference();
  myFileReference.browse();
}

But for some reasons the file dialog is not showing, but the text from label with id l1 is changed.

도움이 되었습니까?

해결책

the FileReference.browse action could be called only in response to a user action(mouse event or keypress event), so you have to modify your code to gain the user action, for example you can use Alert:

        public function receiveTextFromJS(s:String):void {
            Alert.show("Browse for files?", "", Alert.OK | Alert.CANCEL, null, onAlert);
        }   

        private function onAlert(event:CloseEvent):void
        {
            if(event.detail == Alert.OK)
            {
                var myFileReference:FileReference = new FileReference();
                myFileReference.browse();
            }
        }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top