前文回顾
问题:无法获取弹出层window对象里的内容_前端-优快云问答
解决办法:http://t.csdnimg.cn/peZz6
当时获取window对象的方式是:
layer.open({
type: 1,
title:"墓穴查询",
content: '<iframe style="width: 1316px;height: 617px;" src="analysis_select.jsp" frameborder="0" class="layadmin-iframe"></iframe>',
area: ['320px', '195px'], // 初始宽高
maxmin: true,
success: function(layero, index){
layer.full(index); // 最大化
var iframeWindow = layero.find('iframe')[0];
console.log(iframeWindow) //打印弹出层window
console.log(iframeWindow.contentWindow) //打印弹出层window的内容contentWindow
console.log(iframeWindow.contentWindow.layui) // 打印contentWindow里的layui
//submit = layero.find('iframe').contents().find('#tomb_sub_box');
//监听提交
// iframeWindow.layui.form.on('submit(tomb_sub_box)', function(data){
// layer.close(index); //关闭弹层
// });
}
});
使用的解决办法是 settimeout(),缺点是不能确定具体的等待时间。
现在新的解决方式出炉了
首先,我忽略了最重要的一点:弹层的类型type
content 中定义的看似是 iframe,但真正决定它性质的还是 type 的值。参照我的另一篇文章:http://t.csdnimg.cn/iyxXy
type 值为2,才是 iframe 层!
然后是获取 window 对象:
var iframeWin = window[layero.find('iframe')[0]['name']];
这种方式拿到的 window 对象是官方提供的方法,没有延迟无需添加 settimeout(),拿到 window 对象后就可以在父页面尽情操纵弹出层了。