父框架与子框架的互操作

一个页面中可能嵌入多个iframe,该页面与iframe中的子页面的互操作方式如下:

1、父页面访问子页面

  说明实例,index.aspx为父页面,index2.aspx为子页面并定义了函数save(),index.aspx如下:

<div>
    <iframe id="assetReportIframe" name="myframe" src="index2.aspx"></iframe>
</div>

 1.1 window.frames

  window对象包含属性frames,其为当前页面中子框架window对象的集合,因此可以通过该属性访问子框架window对象。属性frames的访问方式有两种:

    a、索引

    b、名称

    c、id

  通过索引或名称,ie7、ie8、ie11、chrome表现相同,如:window.frames[0]或者window.frames['myframe']

  通过id,ie(包括7、8、11)与chrome存在差异:

    ie中,window.frames['assetReportIframe']返回的是该框架的window对象

    chrome中,window.frames['assetReportIframe']返回的是该框架元素的对象

 1.2 iframe.contentWindow

  此为通用方式:document.getElementById('assetReportIframe').contentWindow.save()

2、子页面访问父页面

  子页面访问父页面方式比较简单,即在子页面调用window.top或window.parent

3、子页面与父页面的js执行均调用同一线程,即仍为单线程

  测试方法:利用同步ajax会阻断线程执行的特点,分别在父页面与子页面调用ajax和alert函数,结果为子页面js会被父页面阻断

 

window.open()打开的页面也可以与父页面互操作,另外,注意:

  1、以上所有操作须在同一域中,不同域之间的消息传递可是使用XDM,详见《javascript高级程序设计》

    2、在ie7、ie8、ie11、chrome中,iframe定义的格式为<iframe></iframe>,而不能使用<iframe />,后一种格式虽然浏览器能够识别,但会导致浏览器忽略该iframe之后script标签,即iframe之后的js不会执行

posted @   Matt_Cheng  阅读(2063)  评论(0编辑  收藏  举报
编辑推荐:
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· MQ 如何保证数据一致性?
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
点击右上角即可分享
微信分享提示