2010-04-12 59 views
15

中的腳本如何能夠包含任何包含它的頁面概念?框架中的腳本可以訪問它之外的任何環境嗎?跨域呢?iframe訪問父級DOM?

直到現在我相信一個是完全對包含頁面不可知的,但我已經看到一個與此信念相矛盾的例子。

關於包含頁面,內究竟能做什麼和不能做什麼?

回答

31

如果iframe及其父項的內容具有相同的域,則可以使用parent.document.getElement...從iframe訪問父頁 - 但不能執行此跨域。

+15

僅供參考,'top'是頂級的文件,'self'是當前文檔和'parent'高於當前文檔。 – cryo 2010-04-12 09:08:35

+0

每天學習新東西:) – 2010-04-12 09:46:12

+0

@oezi,我有一個文檔從不同的域加載iframe。我能夠從該iframe中加載的文檔中操作iframe屬性。我使用parent.document.getElementById()來獲取元素,然後使用$(ele).attr('width','100%')添加一個屬性; 我不知道爲什麼它爲我工作。讓我知道你是否想知道我的環境的任何細節,以更好地瞭解這個問題。謝謝 – Rishabh 2014-06-30 20:47:10

4

通常,您不能在跨域的兩個DOM之間進行通信。但是,有一種方法可以使用iframe的url的哈希部分在兩者之間傳遞消息。對於同一個域上的iframe,請參閱oezi's answer

This might be of some help,關於這個話題還有很多其他問題。

+0

有趣的文章,奇怪它作爲Safari瀏覽器,鉻,火狐,歌劇,甚至MSIE8支持它還沒有足夠的支持,否認html5的postmessage支持它。使用jquery postmessage插件(它使用您鏈接的文章中使用的一些技術),它變得完全跨瀏覽器。 – futtta 2010-04-12 09:27:32

+0

我認爲這是可以理解的 - 它是在2008年3月寫的:)這個jQuery插件聽起來很有趣。 – 2010-04-12 09:45:42