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

我有一个表单中的iframe。 iframe包含一些我想通过Array实例传递给父窗体的信息。 问题:数组实例失去它的类型,并成为一个对象! iframe功能:

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的func?

感谢帮助。


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

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

它感觉不舒服,但它的作品。


@darin谢谢你的回答。 你一定会发现问题我想要做一些演员。 我需要把它看作一个像数组一样的数据源。 我写这样的代码:

var arr = new Array(SuppliersIDs);

结果是对象数组不是整数的原始数组。


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

$(this).contents()[0].defaultView.yourFunc()
链接地址: http://www.djcxy.com/p/4745.html

上一篇: JavaScript: when I pass array from iframe function the array lose his type!

下一篇: How to pass props to {this.props.children}