iframe 父页面与子页面之间的方法的相互调用

如果你采用嵌入iframe机制,不可避免的要用到各个iframe页面之间方法和属性的相互调用。这里介绍的是兼容各个浏览器的iframe调用方式。

这里设定有3个页面,一个父页面main.html,它嵌入了两个iframe,分别是:childPage1.html和childPage2.html

main.html有一个函数叫parentFunc()。main.html代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<script type="text/javascript"

function parentFunc(){

//代码段

}

</script>

<body>

<IFRAME scrolling="no" frameBorder=0 id=frmchild1 name=frmchild1 height="400"

src="childPage1.html" width="100%" allowTransparency="true"></IFRAME>

<IFRAME scrolling="no" frameBorder=0 id=frmchild2 name=frmchild2 height="400"

src="childPage2.html" width="100%" allowTransparency="true"></IFRAME>

</body>

</html>

子页childPage1.html中有函数childFunc1()。代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<script type="text/javascript"

function childFunc1(){

//代码段

}

</script>

<body>

</body>

</html>

子页childPage2.html中有函数childFunc2()。代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<script type="text/javascript"

function childFunc2(){

//代码段

}

</script>

<body>

</body>

</html>

子页调父页方法

如果子页childPage1.html要调用父页main.html中的parentFunc()方法,那么应该在childPage1.html中写如下代码:

parent.parentFunc()

或者用

top.parentFunc()

parent找上一级,top找最上一级。因为childPage1.html属于二级,所以parent和top作用一样。 如果 childPage1.html又嵌了一个 grandchildrenPage.html的iframe,想要调用main.html中的parentFunc()方法, 则应该

parent.parent.parentFunc()

或者用

top.parentFunc()

两个子页方法互调

如果childPage1.html要调用childPage2.html中的方法childFunc2(),则应该在childPage1.html中写如下代码:

parent.frmchild2.parentFunc()

或者用

top.frmchild2.parentFunc()

frmchild2是main.html中引入第二个iframe时的id。同理,childPage2.html要调用childPage1.html中的方法childFunc1(),则应该在childPage2.html中写如下代码:

parent.frmchild1.parentFunc()

或者用

top.frmchild1.parentFunc()

子页取得父页的节点对象及属性

在main.html中有一个按钮:

<input type="button" onclick="testFunc()" value="aaa" id="parentBtn"/>

子页childPage1.html要取得该按钮的value,则应在childPage1.html中写如下代码:

parent.document.getElementById("parentBtn").value;

或者用

top.document.getElementById("parentBtn").value;

两个子页互取节点

例如子页childPage1.html中有一个按钮,如下:

<input type="button" value="11" id="btn"/>

如果childPage2.html要调用childPage1.html中按钮的value,则应该在childPage2.html中写如下代码:

parent.frmchild1.document.getElementById("btn").value;

或者用

top.frmchild1.document.getElementById("btn").value;

父页调用子页方法

如果main.html要调用子页childPage1.html中的方法childFunc1(),应在main.html中写如下代码:

document.getElementById("frmchild1").contentWindow.childFunc1()

frmchild1是main.html中引入第一个iframe时的id。 注意:可能网上流传着其他的做法,但大多不兼容。有的只能在IE生效,有的只能在FireFox下生效。所以要以此为准。

父页取得子页节点对象及其属性

例如子页childPage1.html中有一个按钮,如下:

<input type="button" value="11" id="btn"/>

main.html要取得或更改子页childPage1.html的按钮的value值,那么应该用如下代码:

document.getElementById("frmrightChild").contentWindow.document.getElementById(‘btn‘).value;

再例如要取得子页childPage1.html的内容高度,可以从body节点的scrollHeight获得。

document.getElementById("frmrightChild").contentWindow.document.body.scrollHeight;

但要注意需要在iframe页面onload后才能取到其节点。所以完整的做法是main.html在引入childPage1.html加上onload函数,如下:

<IFRAME scrolling="no" frameBorder=0 id=frmchild1 name=frmchild1 height="400"

src="childPage1.html" width="100%" allowTransparency="true"></IFRAME>

getChildHeight()函数如下:

function getChildHeight(){

var frm=document.getElementById("frmchild1");

var childHeight;

childHeight=frm.contentWindow.document.body.scrollHeight+"px";

}

文章来源:http://www.uileader.com/doc/quickui/main.html

时间: 2024-10-07 07:04:33

iframe 父页面与子页面之间的方法的相互调用的相关文章

iframe 父页面与子页面之间的方法的相互调用【转】

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Parent Page</titl

jquery、js调用iframe父窗口与子窗口元素的方法整理

转载自:http://www.soso.io/article/17034.html 1. jquery 在iframe子页面获取父页面元素代码如下: $("#objid", parent.document) 2. jquery在父页面 获取iframe子页面的元素 代码如下: $("#objid",document.frames('iframename').document) 3.js 在iframe子页面获取父页面元素代码如下: indow.parent.docu

JQuery操作iframe父页面与子页面的元素与方法

JQuery操作iframe父页面与子页面的元素与方法 更新: 2011-05-05 来源: 互联网 字体:[大 中 小] - JQUERY IFRAME 下面简单使用Jquery来操作iframe的一些记录,这个使用纯JS也可以实现. 第一.在iframe中查找父页面元素的方法: $('#id', window.parent.document) 第二.在父页面中获取iframe中的元素方法: $(this).contents().find("#suggestBox") 第三.在ifr

Iframe父页面与子页面之间的相互调用

iframe元素就是文档中的文档. window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者iframe标签),浏览器就会为原始文档创建一个window对象,再为每个iframe创建额外的window对象,这些额外的window对象是原始窗口的子窗口. contentWindow: 是指指定的iframe或者iframe所在的window对象 Demo1 父页面fu.html: <!DOCT

Iframe父页面与子页面之间的调用

专业词语解释如下:     Iframe:iframe元素是文档中的文档.     window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者iframe标签),浏览器就会为原始文档创建一个window对象,再为每个iframe创建额外的window对象,这些额外的window对象是原始窗口的子窗口. contentWindow: 是指指定的iframe或者iframe所在的window对象.

js父页面和子页面之间传值

今天和朋友一块讨论,怎样通过js在父页面和子页面之间传值的问题,总结例如以下: 需求描写叙述:父页面有多个子页面.实如今父页面点击子页面,传值到子页面. 看着非常easy,试了好久.主要纠结在怎样获取iframe,刚開始用document.getElementById('iframe的ID'),后来查资料才发现这样的方法仅仅是去取出了一个OBJECT,不能操作它的函数方法.后来改成window.iframes["iframe的name"],这样就能够获取子页面的整个DOM,能够操作它的

IFrame父页面和子页面的交互

现在在页面里面用到iframe的情况越来越少了,但有时还是避免不了,甚至这些页面之间还需要用js来做交互,那么这些页面如何操作彼此的dom呢?下面将会逐步介绍. 1.父页面操作子页面里面的dom 下面提供了四中方法来操作iframe里面的dom: a. contentWindow: 以window对象返回iframe中的文档,所有主流浏览器都支持. 用法: // 获取id为iframeId的子页面中的div01元素 document.getElementById('iframeId').cont

转:iframe加载的子页面里面获取父级元素窗口以及元素的高度

iframe里的js要操作父级窗口的dom,必须搞懂几个对象: parent是父窗口(如果窗口是顶级窗口,那么parent==self==top) top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe) self是当前窗口(等价window) 父级页面:index.html <!doctype html> <html> <head> <meta charset="utf-8"> <title>父窗口<

使用iframe父页面调用子页面和子页面调用父页面的元素与方法

在实际的项目开发中,iframe框架经常使用,主要用于引入其他的页面.下面主要介绍一下使用iframe引入其他页面后,父页面如何调用子页面的方法和元素以及子页面如何调用父页面的方法和元素. 1.父页面获取子页面的元素 //jquery方式 $("#iframeId").contents().find("#child1"); //js方式 window.frames["iframName"].document.getElementById(&quo