layui弹出层之layer.open弹出iframe窗口·
layer.open弹出iframe窗口
【1】该功能为案例,弹出iframe窗口显示上传数据
由于layui的弹出层每次执行layer.open({})都会弹出新的iframe窗口,它不会帮你判断是否弹出相同的iframe窗口,使用只能自己手动判断,禁止在已有iframe窗口下,再次使用layer.open({})创建新的iframe窗口
1)解决重复弹出iframe相同窗口方法
因为layer.open({})再创建iframe窗口时,会返回一个标识--参数index为层的索引(每一种弹层调用方式,都会返回一个index)
使用全局变量index区分弹出iframe窗口在需要上传时,判断if(index!="")
2)解决父子页面数据交互问题
只要能获取iframe窗口的id,通过其他函数进行数据交互
如,contentWindow方法
//得到iframe页的窗口对象,执行iframe页的方法:
var iframeWin = window[layero.find('iframe')[0]['name']];
//获取iframe窗口的id
var iframeID=iframeWin.frameElement.id;
3)解决窗体自动从最小化--》还原
layui通过layer.full()、layer.min()、layer.restore()手工执行最大小化
只要知道iframe窗口参数index的标识索引就能控制iframe窗口最大、最小、还原化和关闭
layer.restore(index);
注意,我在执行该方法时,代码出现些bug,该方法好像会干扰
对iframe窗口的操作和其他代码执行,所以放到位置要放好点
我用全局变量var indexmin=false;
当iframe窗口缩小时,触发min事件就改为true,
min:function(){
indexmin=true;
},
目的是iframe窗口缩小化时,正好又执行上传,我需要iframe窗口还原显示上传数据
if(indexmin==true){
layer.restore(index);
indexmin=false;
}
//layer.open的全局变量--iframe的标志
var index;
var iframeid="";
var indexmin=false;
function upinput(num){
//判断还原iframe的窗口
if(indexmin==true){
layer.restore(index);
indexmin=false;
}