在IE中获取从小程序传递到其Javascript包装器的Java数组的长度
我的小程序中有以下方法:在IE中获取从小程序传递到其Javascript包装器的Java数组的长度,java,javascript,internet-explorer,applet,Java,Javascript,Internet Explorer,Applet,我的小程序中有以下方法: public File[] getFiles() 我从Javascript调用它,如下所示: var files = applet.getFiles(); for (var i = 0; i < files.length; i++) { // Do something. } 任何人有什么想法吗?你可以在IE中使用它来调查文件发生了什么事 首先,在文件中包含Firebug Lite <script type='text/javascript'
public File[] getFiles()
我从Javascript调用它,如下所示:
var files = applet.getFiles();
for (var i = 0; i < files.length; i++) {
// Do something.
}
任何人有什么想法吗?你可以在IE中使用它来调查文件发生了什么事
首先,在文件中包含Firebug Lite
<script type='text/javascript'
src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
现在在控制台中用
var files = applet.getFiles();
console.log(files);
for (var i = 0; i < files.length; i++) //...
var files=applet.getFiles();
console.log(文件);
对于(var i=0;i
现在,您可以调查getFiles()
我给出这个建议是因为IE说
length
不是空的或不是对象,而不是files
是空的或不是对象,所以可能files
有其他方法可以使用。使用Firebug来反映这些问题。不确定将Java数组传递给javascript的支持范围有多广。一种解决方法是将数组作为分隔字符串返回,如下例所示
找到了变通方法。与其返回数组,不如返回列表。然后使用get和size方法对其进行迭代。适用于IE和Firefox 因此,小程序方法应为:
public List<File> getFiles()
公共列表getFiles()
在Javascript端使用它:
var files = applet.getFiles();
for (var i = 0; i < files.size(); i++) {
// Do something with files.get(i).
}
var files=applet.getFiles();
对于(var i=0;i
对Java一无所知,我只能问你是否尝试过“for(I in files){/*do stuff*/}”你不是指File[](而不是files[])?除此之外,如果您向(文件)发出警报,则会有所帮助。另外,如果你有一个javascript调试器(例如DebugBar),这将是最有用的。@annakata:是的,我试过了。它在Firefox或IE中都不起作用。@laginimaineb:更正问题。谢谢此外,警报(文件)并没有多大帮助,但我将尝试下面kizzx2的建议来窥探文件的结构。已经看到了这个链接。这种方法是不可行的,因为getFiles返回一个非字符串对象数组。我意识到,您可以从文件数组所需的字符串属性(例如文件路径)构建字符串。然后,您可以使用应该首先选中的路径从文件中获取所需的详细信息。这里明确指出,在某个LiveConnect版本中,数组是不可靠的。
var files = applet.getFiles();
for (var i = 0; i < files.size(); i++) {
// Do something with files.get(i).
}