关键点:
1 window.iframeMap = data.iframeMap;
把js方法中的局部变量转变成父页面的全局变量。
2 window.iframeWin = windowlayero.find('iframe')[0];
这里的iframeWin指向的是子页面。得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
3 onClick="window.parent.iframeWin.initIframeMap(window.parent.iframeMap['"+i+"']);"
如果是要在父页面的js中调用子页面的js方法initIframeMap ,直接使用iframeWin.initIframeMap 就可以了,参数也能直接传递过去。
父页面layerIframeTest.html:
父页面$('body').on('click', '.getSubPage', function(){
layui.use('layer', function(){
var layer = layui.layer;
layer.open({
type: 2,
shade : 0.3,
area : ['70%','88%'],
title : 'iframe页面标题',
content: ['subPage.html'],
success: function (layero, index) {
var body = layer.getChildFrame('body', index); //LAYER对象下的方法,获取子iframe中的DOM
window.iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
var data ="{\"iframeMap\":[";
data += "{\"iframeContent\":\"iframe页面\",";
data +="\"iframeSubMap\":[";
data += "{\"iframeSubContent\":\"iframe页面弹窗内容\"}";
data += "]}";
data += "]}";
//data = eval('('+data+')');
//data = $.parseJSON(data);
data = JSON.parse(data);
if (data.iframeMap != undefined) {
var html = "";
window.iframeMap = data.iframeMap;
for(var i in data.iframeMap){
iframePage = data.iframeMap[i];
html += "
";html += "
"+iframePage.iframeContent+"内容";html += "
";}
body.contents().find("#iframeTbody").html(html);
}
}
});
});
});
子页面subPage.html:
iframe页面无数据 |
function initIframeMap(iframeMap) {
var iframeSubMap = iframeMap.iframeSubMap;
var html = '';
if(iframeSubMap.length == 0){
html += "
}else{
for(var i in iframeSubMap){
var iframeSubPage = iframeSubMap[i];
html += "
}
}
layui.use('layer', function(){
var layer = layui.layer;
layer.open({
type: 1,
shade : 0.3,
area : ['70%','88%'],
title : iframeMap.iframeContent + "弹窗标题",
content: html
});
});
}