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

iframe元素就是文档中的文档。

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

Demo1

父页面fu.html:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>父页面</title>
    </head>
    <body>
    <input type=button value="调用子页面中的函数childSay函数" onclick="callChild()">
    <iframe id="myFrame" src="zi.html"></iframe>
    <script type="text/javascript">
function parentSay() {
alert("我是父页面中的方法");
}
function callChild()
{
document.getElementById("myFrame").contentWindow.childSay();
}
    </script>
    </body>
</html>

子页面zi.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>子页面</title>
    </head>
    <body>
    <input type=button value="调用父页面中的parentSay()函数" onclick="callParent()">
    <script type="text/javascript">
function childSay()
{
alert("我是子页面的say方法");
}
function callParent() {
parent.parentSay();
}
    </script>
    </body>
</html>

Demo2

父页面iframe1.html:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>父页面与子页面之间的调用</title>
    </head>
    <body>
    <iframe src="http://localhost/iframe/iframe3.html" id="iframe3"></iframe>
    <iframe src="http://localhost/iframe/iframe2.html" id="iframe2"></iframe>
    <div class="iframe1">我是父页面</div>
    <script type="text/javascript">
    var iframe2=document.getElementById(‘iframe2‘);
    iframe2.onload=function(){//父页面调用子页面中的方法
        iframe2.contentWindow.b();
    };
    function test2() {
        console.log("我是父页面中的方法,在子页面中调用的");
        return iframe2;
    }
    </script>
    </body>
</html>

子页面iframe2.html:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>子页面</title>
    </head>
    <body>
    <div id="test">aaa</div>
    <div class="iframe2">子页面</div>
    <script type="text/javascript">
    //子页面iframe2.html调用父页面iframe1.html的函数:
     parent.test2();
      function b(){
           console.log("我是子页面iframe2");
       }
       function c() {
           console.log("iframe3页面调用iframe2页面");
       }
    </script>
    </body>
</html>

子页面iframe3.html:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>iframe3</title>
    </head>
    <body>
    <script type="text/javascript">
    var iframe2=parent.test2();
    iframe2.contentWindow.c();//iframe3调用iframe2中的方法
    </script>
    </body>
</html>

Demo2也实现了子页面与子页面之间相互调用。

时间: 2024-08-30 06:16:46

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

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

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

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

vue引入iframe的父页面向子页面传递数据

父页面 <template> <div> <el-button @click='btn(index)' :class="{'active':activeName2==index}" v-for="(item,index) in list" :key="index"> {{item.label}} </el-button> <iframe-tab :assid="assid"

父页面获取子页面的内容

需求说明:两个JSP页面,父页面需要子页面的内容,但子页面是隐藏的,具体来说,子页面是一系列的模板,父页面要通过id来获取这些模板,不愿意通过<include>方式导入,因为如果模板过多,就导致整个父页面太大,加载缓慢,以下两个方案,不知有没有解决这个问题. 1,通过ajax方式 实现过程:通过ajax请求到子页面中,子页面获取参数id使用java和js变量的交互后,返回需要的模板信息 缺点:把js变量转换成java变量比较麻烦,需要使用form表单来提交,而且jsp中的java脚本是在服务器

父页面与子页面间相互传值

父页面与子页面间相互传值 1.子页面又父页面通过window.open弹出 子页面要向父页面传值,只要在document前面加window.opener即可.如:父页面: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />