父框架与子框架的互操作
一個頁面中可能嵌入多個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不會執行
轉載于:https://www.cnblogs.com/MattCheng/p/5069713.html
總結
以上是生活随笔為你收集整理的父框架与子框架的互操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java导出word(带图片)
- 下一篇: background-attachmen