问题描述:最近在做项目的时候,遇到一个iframe多个页面之间传递变量的问题。iframe框架页面中,点击不同页面,设置不同选项,最后点击保存,然后能够一起保存在数据库中。
解决思路:需要在主iframe页面定义一个js全局变量,通过在子iframe页面为全局变量赋值实现。
首先,在主页面定义全局变量v_global='',然后在子iframe页面中给全局变量赋值,比如说,保存的是json对象格式的数据,这个要用Ext.encode()函数,把json对象转成字符串,然后赋值给js全局变量。其他页面类似。
如果在主iframe页面直接定义成json对象格式,在子iframe页面之间传递的时候,可能会出现不能执行的script脚本。本人就遇到了,刚开始不知道,解决起来很麻烦,最后才找出原因。是因为我的json对象中放入了数组,而页面之间传递的时候,出现了数组指针找不到了。所以一句话,页面间传递变量的时候,传递字符串。
主要代码:
v_global='';//主iframe
var temp = {'array':[]};//子页面定义
window.parent.v_global=Ext.encode(temp);//赋值
Ext.decode(window.parent.v_global).array[i]//获取主页面全局变量中的数组的值。
介绍几个比较有用的函数:
Ext.encode(); 编码:对象转成字符串
Ext.decode(); 解码:字符串转成对象
/******************** 例子:数组array是否包含元素a 包含:return true; 调用:array.in_array('a'); ********************/ //通过数组原型定义函数 Array.prototype.S=String.fromCharCode(2); Array.prototype.in_array=function(e) { var r=new RegExp(this.S+e+this.S); return (r.test(this.S+this.join(this.S)+this.S)); }