使用iframe框架打开页面(layer.open)并存在嵌套时怎样获取到嵌套内的框架对象?
Posted firstcsharp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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"); } } }) }
以上是关于使用iframe框架打开页面(layer.open)并存在嵌套时怎样获取到嵌套内的框架对象?的主要内容,如果未能解决你的问题,请参考以下文章