我有个mxml文件部分如下:<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.controls.ProgressBar;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
private var urlRequest:URLRequest;
private var fList:FileReferenceList=new FileReferenceList();
private var fileQueue:Array=[];
private var selectedFiles:ArrayCollection=new ArrayCollection();
private var config:Object={urlRequest:"Uploader.ashx"};
private function init():void
{
Security.allowDomain("*");
ExternalInterface.addCallback("InitBusiness",InitBusiness);
ExternalInterface.addCallback("Browse",browse);
ExternalInterface.addCallback("Upload",uploadFiles);
fList.addEventListener(Event.SELECT,selectFileHandler);
fList.addEventListener(Event.COMPLETE,completeHandler);
fList.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
this.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
}
private function InitBusiness(obj:Object):void{
obj=obj || {};
for(var p:String in obj){
this.config[p]=obj[p];
}
}
private function browse():void
{
selectFiles();
}
private function selectFiles():void
{
var filters:Array=[];
if(this.config["filters"]){
for each(var o:Object in this.config["filters"]){
filters.push(new FileFilter(o["description"],o["extension"]));
}
}
else{
filters=[new FileFilter("所有文件(*.*)","*.*")];
}
fList.browse(filters);
fList=new FileReferenceList();
}
private function selectFileHandler(event:Event):void{
OuterEventHandler("SELECT",event);
for each(var f:FileReference in fList.fileList){
selectedFiles.addItem(f);
}
}
private function ioErrorHandler(event:IOErrorEvent):void{
OuterEventHandler("IO_ERROR",event);
}
private function completeHandler(event:Event):void{
OuterEventHandler("COMPLETE",event);
}
public function singleCompleteHandler(event:DataEvent):void{
var f:FileReference=event.target as FileReference;
OuterEventHandler("UPLOAD_COMPLETE_DATA",event);
f.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA,singleCompleteHandler);
f.removeEventListener(ProgressEvent.PROGRESS,progressHandler);
uploadFile();
}
private function progressHandler(event:ProgressEvent):void{
OuterEventHandler("PROGRESS",event);
}
private function uploadFiles():void{
fileQueue=selectedFiles.toArray();//.concat();
fileQueue.reverse();
this.urlRequest = new URLRequest(this.config["urlRequest"]);
uploadFile();
}
private function uploadFile():void{
if(fileQueue.length>0){
try{
var f:FileReference=fileQueue.pop() as FileReference;
//f.addEventListener(Event.COMPLETE,singleCompleteHandler);
f.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,singleCompleteHandler);
f.addEventListener(ProgressEvent.PROGRESS,progressHandler);
f.upload( this.urlRequest );
}
catch(err:Error){
Alert.show(err.message);
}
}
}
private function OuterEventHandler(eventName:String,event:Object):void{
if(this.config.events && this.config.events[eventName]){
ExternalInterface.call(this.config.events[eventName],event);
}
}
private function clear():void{
if(!this.selectedFiles) return;
this.selectedFiles.removeAll();
}
]]>
</mx:Script>
<mx:HBox>
<mx:Button label="测试" click="selectFiles()" />
</mx:HBox>
</mx:Application>如上,我希望将这个东东在html页面不显示,然后通过html页面的js调用browse打开文件浏览对话框,
uploader.Browse();
可是,总提示未指明的错误,请各位达人指点迷津啊!!!!!!
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.controls.ProgressBar;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
private var urlRequest:URLRequest;
private var fList:FileReferenceList=new FileReferenceList();
private var fileQueue:Array=[];
private var selectedFiles:ArrayCollection=new ArrayCollection();
private var config:Object={urlRequest:"Uploader.ashx"};
private function init():void
{
Security.allowDomain("*");
ExternalInterface.addCallback("InitBusiness",InitBusiness);
ExternalInterface.addCallback("Browse",browse);
ExternalInterface.addCallback("Upload",uploadFiles);
fList.addEventListener(Event.SELECT,selectFileHandler);
fList.addEventListener(Event.COMPLETE,completeHandler);
fList.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
this.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
}
private function InitBusiness(obj:Object):void{
obj=obj || {};
for(var p:String in obj){
this.config[p]=obj[p];
}
}
private function browse():void
{
selectFiles();
}
private function selectFiles():void
{
var filters:Array=[];
if(this.config["filters"]){
for each(var o:Object in this.config["filters"]){
filters.push(new FileFilter(o["description"],o["extension"]));
}
}
else{
filters=[new FileFilter("所有文件(*.*)","*.*")];
}
fList.browse(filters);
fList=new FileReferenceList();
}
private function selectFileHandler(event:Event):void{
OuterEventHandler("SELECT",event);
for each(var f:FileReference in fList.fileList){
selectedFiles.addItem(f);
}
}
private function ioErrorHandler(event:IOErrorEvent):void{
OuterEventHandler("IO_ERROR",event);
}
private function completeHandler(event:Event):void{
OuterEventHandler("COMPLETE",event);
}
public function singleCompleteHandler(event:DataEvent):void{
var f:FileReference=event.target as FileReference;
OuterEventHandler("UPLOAD_COMPLETE_DATA",event);
f.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA,singleCompleteHandler);
f.removeEventListener(ProgressEvent.PROGRESS,progressHandler);
uploadFile();
}
private function progressHandler(event:ProgressEvent):void{
OuterEventHandler("PROGRESS",event);
}
private function uploadFiles():void{
fileQueue=selectedFiles.toArray();//.concat();
fileQueue.reverse();
this.urlRequest = new URLRequest(this.config["urlRequest"]);
uploadFile();
}
private function uploadFile():void{
if(fileQueue.length>0){
try{
var f:FileReference=fileQueue.pop() as FileReference;
//f.addEventListener(Event.COMPLETE,singleCompleteHandler);
f.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,singleCompleteHandler);
f.addEventListener(ProgressEvent.PROGRESS,progressHandler);
f.upload( this.urlRequest );
}
catch(err:Error){
Alert.show(err.message);
}
}
}
private function OuterEventHandler(eventName:String,event:Object):void{
if(this.config.events && this.config.events[eventName]){
ExternalInterface.call(this.config.events[eventName],event);
}
}
private function clear():void{
if(!this.selectedFiles) return;
this.selectedFiles.removeAll();
}
]]>
</mx:Script>
<mx:HBox>
<mx:Button label="测试" click="selectFiles()" />
</mx:HBox>
</mx:Application>如上,我希望将这个东东在html页面不显示,然后通过html页面的js调用browse打开文件浏览对话框,
uploader.Browse();
可是,总提示未指明的错误,请各位达人指点迷津啊!!!!!!
解决方案 »
- ~ ~~求教关于onload onunload实现流氓广告的疑问 ~~~
- extjs gridPanel不能显示数据
- 从javascript写法上是否可以看出别人是高手还是低手??
- bxslider问题
- web msn qq
- 求一段JS代码 判断是否是工作日 最好算上法定假期
- 奇怪,NETSCAPE是不是支持previousSibling但是不支持nextSibling哦?
- 帮忙-提议一下 有没有想封装的控件,
- 大家好:JavaScript可以读文件中的数据吗?或者说可以从加密狗中读密钥吗?参与有分。
- 帮忙看一个类似于textarea自增长高度的JS问题
- Jquery pageY
- 怎样给图片赋值
1,直接点那个按钮可以打开对话框;
2,JS调用这个flex中普通的函数是没问题的. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" onactivate="init(true);"
id="FlexFileUpload" width="611" height="161" style="padding:0 0 0 0;"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="yuploader11.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
</object>
onactivate="init(true);"在此 init函数中FlexFileUpload.Browse();正常.
但是在html其他地方直接FlexFileUpload.Browse();就不行.郁闷的是,FlexFileUpload.setActive();不行