js/jquery如何獲取獲取父窗口的父窗口的元素


取父窗口的元素方法:$(selector, window.parent.document);
那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);

類似的,取其它窗口的方法大同小異

1 $(selector, window.top.document);
2 $(selector, window.opener.document);
3 $(selector, window.top.frames[0].document);

詳解:(以上方法較好用)

一、獲取iframe里的內容

在開始之前,首先我們來看看如何獲取iframe里的內容,獲取iframe中內容主要的兩個API就是contentWindow,和contentDocument iframe.contentWindow, 獲取iframe的window對象 iframe.contentDocument, 獲取iframe的document對象 這兩個API只是DOM節點提供的方式(即getELement系列對象)

1 var iframe = document.getElementById("iframe1");
2 var iwindow = iframe.contentWindow;
3 var idoc = iwindow.document;
4  console.log("window",iwindow);//獲取iframe的window對象
5  console.log("document",idoc); //獲取iframe的document
6  console.log("html",idoc.documentElement);//獲取iframe的html
7  console.log("head",idoc.head); //獲取head
8  console.log("body",idoc.body); //獲取body

實際情況如:

另外更簡單的方式是,結合Name屬性,通過window提供的frames獲取.

1 <iframe src ="/index.html" id="ifr1" name="ifr1" scrolling="yes">
2  <p>Your browser does not support iframes.</p>
3 </iframe>
4 <script type="text/javascript">
5  console.log(window.frames['ifr1'].window);
6 console.dir(document.getElementById("ifr1").contentWindow);
7 </script>

其實window.frames[‘ifr1']返回的就是window對象,即

1 window.frames['ifr1']===window

這里就看你想用哪一種方式獲取window對象,兩者都行,不過本人更傾向於第二種使用frames[xxx].因為,字母少啊喂~ 然后,你就可以操控iframe里面的DOM內容。

二、在iframe中獲取父級內容

同理,在同域下,父頁面可以獲取子iframe的內容,那么子iframe同樣也能操作父頁面內容。在iframe中,可以通過在window上掛載的幾個API進行獲取.

  • window.parent 獲取上一級的window對象,如果還是iframe則是該iframe的window對象
  • window.top 獲取最頂級容器的window對象,即,就是你打開頁面的文檔
  • window.self 返回自身window的引用。可以理解 window===window.self(腦殘)

如圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM