JavaScript:当我从iframe函数传递数组时,数组会失去他的类型!

我在表单中有一个iframe。 iframe包含一些我希望通过Array实例传递给父表单的信息。 问题:Array实例丢失了它的类型并成为一个对象! iframefunction:

function getIDS2() { return new Array(); } 

父呼叫代码:

 alert(top.frames["sup_search"].getIDS2() instanceof Array); 

当然,警报的答案是错误的…所以,我可以通过这样做来解决它:

 var arr = []; for(var i =0; i < SuppliersIDs.length; i+=1) { arr.push(SuppliersIDs[i]); } 

其中,SuppliersID是交付的数组,arr是新的真实类型数组。 但为什么这不符合我的要求呢? 顺便问一下,有没有办法用jQuery访问iframe函数?

感谢帮助。

因为每个页面都有一个具有自己的“数组”function的全局上下文,如果一个页面上的代码将数组传递给单独页面上的函数,则测试“array instanceof Array”将失败。 对于Array,您可以这样做:

 var arr = top.frames["sup_search"].getIDS2(); var isArray = arr && Object.prototype.toString.call(arr)=="[object Array]"; 

它感觉很hacky但它​​的工作原理。

@darin感谢您的回答。 你肯定发现问题Actualy我想做一些铸造。 我需要像源一样将它作为数组。 我写了这样的代码:

 var arr = new Array(SuppliersIDs); 

结果是一个对象数组而不是原始数组。

我找到了使用jquery访问iframe函数的方法

 $(this).contents()[0].defaultView.yourFunc()