2012-05-10 436 views
1

我在通過jQuery遇到IFRAME的contents()時遇到困難。它實際上是我嘗試訪問的框架內的一個框架。這些幀全部來自同一個源(相同的域,相同的根路徑等)。無法訪問jQuery中IFRAME的內容

我目前通過訪問幀:

var $frame = $(window.top.frames[1].document).find('#innerFrameName'); 

這工作得很好,如果我console.log $幀的價值,我看到它是一個jQuery數組:

[<frame src=​"mypage.htm" id=​"innerFrameName" frameborder=​"1" border=​"1" scrolling=​"auto" title=​"My Inner Frame" name=​"bsscright">​] 

然而,當我嘗試調用以下內容(如StackOverflow question中所述)時,我得到一個空數組。

var $contents = $frame.contents(); 
console.log($contents);  // => [] 

即使我試圖去到文件本身,我不能。

var innerDocument = $frame.get(0).document; 
console.log(innerDocument); // => undefined 

我甚至試過在沒有jQuery的情況下進行操作,並得到與上面相同的結果。

var innerFrame = window.top.frames[1].frames['innerFrameName']; 
var innerDocument = innerFrame.document; 
console.log(innerFrame);  // => the DOM object representing the IFRAME 
console.log(innerDocument); // => undefined 

我在做什麼錯?

+0

「我在做什麼錯了?」使用框架? :) – epascarello

+0

相信我,這不是選擇!這是第三方產品。 –

回答

0

這是未經測試的,您應該在訪問框架時使用內容。我會假設它會是:

var someDivs = $("#outerIframe").contents().find("#innerIframe").contents().find("div"); 
+0

這似乎也不起作用。對「contents()」的第一次調用返回一個空數組。 –

+0

,並且在兩個iframe都被加載後調用此方法? – epascarello

+0

我已經接到了有關jQuery準備事件的調用。我也試着將這些腳本移動到被調用的最後腳本上,以確保其他腳本在此之前已加載。 –