同域下跨文档通信iframe和window.open
1、iframe標簽可以嵌套另一個標簽,并且可以通過js去訪問被包含的頁面的window對象,從而操作該頁面下documentElement,如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>無標題文檔</title> <script>window.onload = function() {var oBtn = document.getElementById('btn');var oMyIframe = document.getElementById('myframe');oBtn.onclick = function() {//如果我們要操作一個iframe里面的dom元素,首先要獲取到iframe引入的頁面的window//oMyIframe.contentWindow -> 被iframe包含的頁面的window對象//alert(oMyIframe.contentWindow); oMyIframe.contentWindow.document.body.style.background = 'red';}} </script> </head><body><input type="button" value="點擊我,改變2.iframe.html的背景色" id="btn" /><iframe id="myframe" src="2.iframe.html"></iframe> </body> </html>通過contentWindow來找到被包含頁面的window對象,從而繼續其他操作。那么被包含頁面怎么找到他的父級頁面呢?
一個頁面可以通過iframe來嵌套另外一個頁面,被包含的頁面又可以繼續通過iframe標簽也繼續嵌套其他頁面,這樣就是一種層級關系
我們知道window指的是當前頁面窗口,那么parent指的是父級窗口,top指的是頂級窗口,三者可能會表示相同窗口。例如:
parent.document.body.style.background = 'green';
top.document.body.style.background = 'green';
?
2、window.open
通過window.open方法可以打開一個新窗口,并且返回的是被打開窗口的window對象。
例如:
newWindow = window.open('4.window.open.html', '_blank');相反,window.opener可以訪問到通過window.open方法打開當前頁面的窗口window,例如:
window.opener.document.body.style.background = 'green';注意:iframe和window.open都只能解決同域下的跨文檔通信!如果跨域,那么只能訪問到window對象,window對象下的屬性和方法豆漿禁止訪問。
?
轉載于:https://www.cnblogs.com/toodeep/p/4768171.html
總結
以上是生活随笔為你收集整理的同域下跨文档通信iframe和window.open的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (数据分析三板斧)第一斧Numpy-第二
- 下一篇: 操作系统之进程管理:6、调度算法(先来先