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()