iframe子父页面通信

iframe以及iframe的特性

iframe 内联框架,用来在当前 HTML 文档中嵌入另一个文档
以下列举常用属性

  • name 属性
    name属性在iframe中是一个很重要的属性,后面子页面和父页面之间的通信中会用到
  • src 属性
    嵌入页面的地址
  • width 和 height属性
    用来指定iframe的宽度和高度,可以为百分比

iframe子页面与父页面通信

首先我们先给出一个栗子,先写出父页面和子页面

<html>
<head>
   <script type="text/javascript">
       function say(){
           alert("父页面中say方法");
       }

       function callChild(){
         //myFrame 为iframe的name属性
           myFrame.window.say();  //myFrame.say();也可
       
           myFrame.window.document.getElementById("button").value="调用结束";
       }
   </script>
</head>
<body>
   <input id="button" type="button" value="调用child.html中的函数say()" onclick="callChild()"/>
   <iframe name="myFrame" src="child.html"></iframe>
</body>
</html>
<html>
<head>
   <script type="text/javascript">
       function say(){
           alert("子页面中say方法");
       }

       function callParent(){
           //以下两个方法均可
           parent.say();
           parent.window.say();
           parent.window.document.getElementById("button").value="调用结束";
       }
   </script>
</head>
<body>
   <input id="button" type="button" value="调用parent.html中的say()函数" onclick="callParent()"/>
</body>
</html>

方法

父页面调用子页面方法,FrameName.window.childMethod();
子页面调用父页面方法 parent.window.parentMethod();

子页面获取父页面中的dom parent.window.document
付页面内获取子页面中的dom, FrameName.window.document

window.top顶层页面window对象
window.parent 父层页面window对象
window.frames 返回窗口中所有命名的框架,数组集合

注意
  • 本地直接打开html文件会报错,需要启动本地服务器
  • 需要在子页面加载完成后执行,否则会报错
  • 不支持跨域
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容