使用iframe框架打开页面(layer.open)并存在嵌套时怎样获取到嵌套内的框架对象?
作者:互联网
首先,在使用layer.open打开的页面内使用
var index = parent.layer.getFrameIndex(window.name);
获取当前所打开框架的索引序号,并把此序号传送给下一级打开的窗口页面,那么在这个页面上使用:
var $obj = $.currentIframe().frames['layui-layer-iframe'+index];
就可以获取到上一级页面的所有元素对象
例子:
打开“详情”页
function detail(keyValue) { layer.open({ id: 'Detail', type: 2, title: '详情', shadeClose: true, anim: 7, isOutAnim: 2, move: false, offset: 'rb', area: ['70%', '100%'], content: '../../Manage/Detail?keyValue=' + keyValue }) }
在“详情”页上打开另一页面“反馈”页
function feedback() { var index = parent.layer.getFrameIndex(window.name); dialogOpen({ id: 'FeedbackForm', title: '反馈', width: '400px', height: '320px', url: '/Manage/FeedbackForm?index =' + index , callBack: function (iframeId) { top.frames[iframeId].AcceptClick(); } }) }
在“反馈”页上调用“详情”页上的元素及各对象
//保存 function AcceptClick() { $.SaveForm({ ... success: function () { if (keyValue) { var $obj = $.currentIframe().frames['layui-layer-iframe'+index]; var nowTime = new Date(); var addTime = nowTime.Format("yyyy-MM-dd HH:mm"); if (postData["FeedbackStatus"] == 1) { if (postData["Content"] == "") postData["Content"] = "正常通过"; $.currentIframe().$("#gridTable").trigger("reloadGrid"); } var jsonStr = '{"Attachment":\"' + postData["Attachment"] + '\","Content":\"' + postData["Content"] + '\","CreateTime":\"' + addTime + '\","CreateUserName":""}'; $obj.$("#newData").val(jsonStr); $obj.$("#newData").trigger("click"); } else { $.currentIframe().$("#gridTable").trigger("reloadGrid"); } } }) }
标签:function,index,layer,postData,框架,嵌套,var,页面 来源: https://www.cnblogs.com/firstcsharp/p/12821101.html