3 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
要獲取window
幀的對(duì)象,您可以使用該window.frames
數(shù)組:
var iframewindow= frames['iframe_name'];
這要求你提供<iframe>
一個(gè)舊學(xué)校的name
屬性,而不是像id
?;蛘撸绻阒理?yè)面上iframe的順序,你可以用數(shù)字索引它們:
var iframewindow= frames[0];
從DOM中的iframe元素獲取iframe窗口通常更靈活,但這需要一些兼容性代碼來(lái)處理IE:
var iframe= document.getElementById('iframe_id');var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;
jQuery的定義內(nèi)容()方法來(lái)獲取document
節(jié)點(diǎn),但它不會(huì)給你一個(gè)跨瀏覽器的方式從去document
到window
,所以你還是堅(jiān)持了:
var iframe= $('#iframe_id')[0];var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;
這不是一個(gè)真正的大勝利。
(注意:使用jQuery進(jìn)行跨框架腳本時(shí)要非常小心。每個(gè)框架需要自己的jQuery副本,一個(gè)框架副本的方法不一定適用于另一個(gè)框架的節(jié)點(diǎn)??缈蚣苣_本是一個(gè)充滿(mǎn)主題的主題陷阱。)

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
把它們加起來(lái)
從父頁(yè)面訪問(wèn)iframe內(nèi)容
var iframe = $('iframe').contents(); // iframe.find('..') ...
從iframe訪問(wèn)父頁(yè)面內(nèi)容
var parent = $(window.parent.document); // parent.find('..') ...
僅當(dāng)父頁(yè)面和iframe頁(yè)面位于同一域時(shí)才適用。
編輯:在加載子iframe示例:
父html
<iframe id="iframe1" src="iframe1.html"></iframe><iframe id="iframe2" src="iframe2.html"></iframe>
父母js
$(function () { var iframe1 = null, iframe2 = null; // IE8/7 var frameInterval = window.setInterval(function () { iframe1 = $('#iframe1').contents(); iframe2 = $('#iframe2').contents(); if ($('head', iframe1).length && $('head', iframe2).length) { window.clearInterval(frameInterval); } }, 100); // on iframe loaded $('#iframe1').on('load', function (e) { iframe1 = $('#iframe1').contents(); }); $('#iframe2').on('load', function (e) { iframe2 = $('#iframe2').contents(); });});
包括IE9在內(nèi)的所有主流瀏覽器都使用這些on('load')
線路。只有IE8 / 7需要間隔塊。

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
var frames = window.frames || window.document.frames;
用于iframe中的窗口。
frames["myIframeId"].window
用于iframe中的文檔
frames["myIframeId"].window.document
對(duì)于iframe中的身體
frames["myIframeId"].window.document.body
用jquery在iframe中的body
var iframeBody = $(frames["myIframeId"].window.document).contents().find("body");
重要提示:您應(yīng)始終檢查文檔的狀態(tài)是否為“完成”,以便使用此文檔
if (frames["myIframeId"].window.document.readyState=="complete"){ //ok}else{ //perform a recursive call until it is complete}
添加回答
舉報(bào)