2015-09-06 138 views
0

我有嵌入在我的頁面的不同域的iframe。是否有可能通過某種方式從父頁面訪問其DOM?現在,它說:js跨域到iframe


未捕獲拋出:DOMException:無法讀取「HTMLIFrameElement」的「contentDocument」屬性:封閉起源「http://localhost:63342」框架訪問一個跨來源框架。


我希望加入該指令

<?php header('Access-Control-Allow-Origin: *'); ?> 

到的iframe頁面會有幫助,但事實並非如此。 這兩個域現在都位於我的本地主機上,但在不同的服務器上運行。 那麼是否有一些工作解決方案? 請注意,我只需要一些iframe的元素的訪問,這不是關於postMessages,的WebSockets等

回答

1

請注意,我只需要一些iframe的元素的訪問

直接訪問是不可能的

它不是postMessages

postMessage可以達到相同的最終目標。

您只需將訪問DOM的代碼移動到iframe中的頁面,然後使用父窗口中的postMessage來要求該頁面運行它。然後該頁面可以將父窗口需要的任何數據序列化爲字符串,並使用postMessage將其發回。

+0

你看,我需要父頁面立即對iframe中的事件作出反應。例如,如果用戶在iframe內單擊*關閉*按鈕,它應該下降(即摺疊)。如果我理解正確,我可以從它發佈一條消息到父頁面並在其上運行適當的過程,但這需要一些時間,具體取決於連接速度,對吧? – srgg6701

+0

*一切*需要時間。 'postMessage'並不佔用大量的時間(至少不在UI更新發生的時間尺度上)。 – Quentin