jquery嵌套网页获取最外层父页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery嵌套网页获取最外层父页面相关的知识,希望对你有一定的参考价值。

有一个网页嵌套,嵌套层数不确定,在子页面中点击按钮,弹出层窗口,有遮罩,目前弹出窗口和遮罩只在嵌套的子页面中显示,我需要这个弹出层是整个父页面的,然后弹出窗口的返回值给子页面,需要怎么操作

最外层父页面:

function popup(childFrame,callback)
    // do something
    childFrame[callback].call(childFrame,returnValue);

子页面:

elem.onclick = function()
    window.top.popup(window.self,"doInChildFrame");

function doInChildFrame(returnValuse)
    // do something with returnValue

这样,在子页面中的elem元素被点击之后,就会触发最外层父页面的popup函数,并且把子页中的window对象传给父页面,当父页面执行完操作之后,就会执行子页面的"callback"函数,还可以传入参数。

参考技术A

js中有个对象叫top,你去找一下相关的说明吧。如:

top.showMask();


这就是在顶级的页面中显示摭罩。

iframe多层嵌套时获取元素

一、同域:
1、父页面获取子页面元素:
注意:onload事件
jQuery获取:
$("iframe").contents().find("holder")......;

(嵌套三层,或者更多时)
$(‘iframe‘).contents().find(‘iframe‘).contents().find("iframe")......


js获取:
window.frames["holder"].contentWindow.document 或者 window.frames[0].contentWindow.document(不推荐)
(嵌套三层,或者更多时)
window.frames[0].contentWindow.window.frames[0](......).contentWindow.document


补充:
document.frames 与 window.frames 之间的区别:
document.frames 只有IE、Opera 支持,等同于 window.frames。用来取得当前页面内 window 对象的集合。
在 Firefox、Chorome、Safari中使用 document.frames 不能获取到 FRAME 元素
window.frames[‘myframe‘] 代替 document.frames(‘myframe‘)或document.frames[‘myframe‘]。
注意:window.frames只可写成window.frames[‘myframe‘]不能写成window.frames(‘myframe‘)

2、子页面获取父页面元素:
1、子页面获取iframe父页面的DOM
jQuery获取:
$("#holder",parent.document)

js获取:
parent.document.getElementById("holder")  

2、子页面获取父页面里的其他iframe子页面里的DOM
jQuery获取:
$("#holder",window.parent.frames["holder"].document)

js获取:
window.parent.frames["holder"].document.getElementById("holder")

补充:
opener 与 parent 之间的区别
opener:
opener用于在window.open的页面引用执行该window.open方法的的页面的对象。例如:A页面通过window.open()方法弹出了B页面,在B页面中就可以通过opener来引用A页面,这样就可以通过这个对象来对A页面进行操作。

parent:
parent用于iframe,frame中生成的子页面中访问父页面的对象。例如:A页面中有一个iframe或frame,那么iframe或frame中的页面就可以通过parent对象来引用A页面中的对象。这样就可以获取或返回值到A页面中。

总结:
parent指父窗口,在FRAMESET中,FRAME的PARENT就是FRAMESET窗口。
opener指用WINDOW.OPEN等方式创建的新窗口对应的原窗口。
parent是相对于框架来说父窗口对象。
opener是针对于用window.open打开的窗口来说的父窗口,前提是window.open打开的才有。

二、跨域:

以上是关于jquery嵌套网页获取最外层父页面的主要内容,如果未能解决你的问题,请参考以下文章

用iframe嵌套的页面会自动跳转覆盖父页面,请问如何解决?

js页面跳转的问题(跳转到父页面最外层页面本页面)

jquery如何获得父级的父级元素?

前端进行页面跳转和页面刷新的方法

jq 在iframe中点击按钮,父元素触发事件

iframe每个页面加载css js