Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AS3/JavaScript外部接口和文件上载_Javascript_Jquery_Actionscript 3 - Fatal编程技术网

AS3/JavaScript外部接口和文件上载

AS3/JavaScript外部接口和文件上载,javascript,jquery,actionscript-3,Javascript,Jquery,Actionscript 3,我试图创建一个多文件上传flash应用程序,从外部接口调用,但它不起作用 AS3: JavaScript/jQuery: $(function(){ var uploader = this['_uploader']; $('#selectFiles').click(function(){ uploader.selectFiles(); }) }) function ASalert() { alert('Fired'); } 当我运行脚本并注释掉fileRef部分并取

我试图创建一个多文件上传flash应用程序,从外部接口调用,但它不起作用

AS3:

JavaScript/jQuery:

$(function(){
  var uploader = this['_uploader'];

  $('#selectFiles').click(function(){
    uploader.selectFiles();
  })
})

function ASalert() {
  alert('Fired');
}
当我运行脚本并注释掉fileRef部分并取消注释警报调用时,它会显示警报;当我注释掉ExternalInterface调用时,只留下fileRef部分,它会显示文件上载对话框

当我按预期运行它时,会出现以下错误:

Error calling method on NPObject
搜索谷歌提供了一个关于上传文件或在AS3中使用externalInterface的无休止的教程列表,但没有关于同时使用它们的教程


有什么想法吗?

尝试包装您的
ExternalInterface.addCallback('selectFiles',showDialog)语句:

if(ExternalInterface.available)
{
    ExternalInterface.addCallback('selectFiles', showDialog); 

}
即使解决了这个问题,您也会遇到以下问题:

function showDialog() 
{ 
  fileRef = new FileReferenceList(); 
  fileRef.browse(); 

//  ExternalInterface.call('ASalert'); 
}

如果没有诸如鼠标单击或按键之类的用户交互,则无法调用
FileReferenceList.browse()
。没有办法解决这个问题。

这里的问题不就是您只能从交互事件调用
browse()

Adobe说:

在Flash Player 10和Flash Player 9更新5中,您只能在响应用户事件时成功调用此方法(例如,在鼠标单击或按键事件的事件处理程序中)。否则,调用此方法将导致Flash Player引发错误异常


尝试安装flash调试播放器,看看是否出现异常,或者尝试捕获异常并显示错误消息。

我注意到的几件事可能是
fileReferenceList
,您的
ExternalInterface.addCallback()
可能应该是对某个函数的引用,而不是匿名函数。我知道,这是一个打字错误,也是一种快速写出它的方式,因为我实际上是在手机上键入的。。。就像我说的,它的每一部分都很好,只是不在一起。你到底想做什么?我试图让多文件上传对话框在单击ID为“selectFiles”的HTML元素时出现。我认为这是显而易见的,因为该函数是由外部接口调用的……可能是这样“很明显“但这并不意味着我认为你想做的和你想做的是同一件事。谢谢你澄清这一点!我试图为多文件上传做一个HTML5回退,这并没有太大程度地改变网站外观,但似乎我不能!我想,在HTML5得到更好的支持之前,我只会使用Flash上传!你还帮助我使用了我的音乐播放器,我这么做的原因很奇怪,就是为了将它集成为HTML5的后备方案!为什么不直接使用
?如果我理解正确的话,那不需要HTML5,只需要好的普通HTML。这样你就不必退回到flash。另外,我认为flash将是HTML5的后盾更有意义。哦,不管你想要多个文件上传,因此,
FileRereferenceList
。是的,我可以使用HTML5进行多个上传,并且希望使用相同的界面进行flash上传。我只需要使用JavaScriptSWF对象,如果没有多个上传,就用flash按钮替换文件上传按钮!是的,陶拉伊已经在他的回答中指出了这一点,我选择了正确的答案!啊,对不起,错过了那部分:)
function showDialog() 
{ 
  fileRef = new FileReferenceList(); 
  fileRef.browse(); 

//  ExternalInterface.call('ASalert'); 
}