2010-07-29 56 views
2

我有一個框架嵌套在iFrame中。 <iframe>..<frameset..><frame id="report">。我有一個jQuery的參考,myFrame,報告框架。我無法控制HTML。我正在嘗試修改框架中的元素。內容()不適用於框架。我嘗試使用像myFrame.document & myFrame.contentDocument的上下文,但他們給出了錯誤。使用對框架的jQuery引用訪問框架中的元素

如何使用jQuery引用框架的文檔或內容?是一個不同於JavaScript參考的jQuery參考?

ADDITION:

一切都在相同的域。我知道瀏覽器的跨域安全塊。

ADDITION2:

我有一些HTML代碼,在我原來的問題,並沒有注意到他們得到了隱藏。

回答

-2

這是選擇:

$(top.window.frames['frameID'][1].document).contents()[0].find('elementinFrame') 

雖然它不工作,每一次我仍然找出爲什麼。

4

您的框架在框架內與框架的容器位於同一個域中嗎?您現在應該知道,如果它們不在同一個域中,由於瀏覽器的安全限制,您無法操作它。

是一個不同於 javascript參考的jQuery參考嗎?

的jQuery JavaScript是,它做了很多的核心下的分支,所以你不必做很多髒活的。

編輯:由於沒有提供代碼...必須自己做一個演示。

http://medero.org/frame.html

$('iframe').contents().find('frame').get(0).contentWindow.document 

在IE瀏覽器沒有測試。

爲了澄清...

  • $('#el')返回一個jQuery對象。
  • $('#el').get(0)返回jQuery數組式對象中的第一個元素,即對真實DOM元素的引用。
2

Yo dawg ...瀏覽器安全模型將阻止任何DOM訪問來自不同域的iFrame。這是爲了防止有人嵌入頁面,破壞內容/佈局,捕獲表單數據等等。

如果您有權訪問iFramed頁面的源代碼,則可以(通過與瀏覽器視口相同的域上的第三個iFrame)通過url參數向頂層頁面發送信息。否則,你的運氣不好。

如果你只是想改變頁面的佈局,沒有太大的意義,因爲你仍然可以訪問css。但是將iFrame的高度設置爲iFrame的滾動高度是很有用的。

編輯我想這就是你要找的:http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/

$('#iframeID').contents().find('#someID').html(); 
+0

這是Iam定位的框架。這不是一個iFrame。他們在同一個領域。我正在尋找jQuery選擇器語法。 – 2010-07-29 04:33:01

+0

我不認爲downvote是合理的,因爲你沒有指定它是否是相同的域名,此外你沒有發佈你的完整代碼或鏈接演示。你也說過「我沒有對html的控制權」,這可能表明它可能不是同一個域。 – 2010-07-29 04:33:07

+0

對不起,如果你不明白我的答案。我已經添加了一個解決方案的鏈接,並提供了應該選擇iFrame內容的jQuery代碼片段。 不要忘了你也可以使用.load()通過ajax將內容放入同一頁面。 – Keyo 2010-07-29 04:38:11