2013-08-21 60 views
1

如何訪問到IFRAME訪問:如何內部框架

var iframe = document.getElementById('sitefield1'); 
var innerDoc = iframe.contentDocument || iframe.contentWindow.document; 
var elem = innerDoc.getElementsByClassName("myclass")[0]; 

主頁是test1.ru,iframe是test2.ru(包括我的電腦上)。在.htaccess中是

Header add Access-Control-Allow-Origin "http://test1.ru/2" 
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 
Header add Access-Control-Expose-Headers "X-InlineCount" 

是否有可能進入iframe模塊? 我是這個網站的所有者(做一些測試),也可以添加任何設置到我的Firefox。 我還發現,這段代碼在IE中不起作用(即使我打開了不同域之間的聯繫,XSS過濾器也被關閉)。 Chrome看起來不再支持--disable-web-security了...... Chrome的錯誤是 阻止了一個來源爲「test1」的幀訪問一個源於「test2」的幀。協議,域和端口必須匹配。

任何想法都會對此很有幫助。

回答

3

您不能直接訪問跨越原點的幀。在現代瀏覽器中,您可以使用postMessage

幀發送數據需要調用postMessage

top.postMessage({ foo: "bar" }, "*"); 

和幀接收數據需要登記一個事件監聽器來尋找消息,並反應給他們。

window.addEventListener("message", receiveMessage, false); 
function receiveMessage(evt) { 
    alert(event.data.foo); 
} 
+0

這是一個不錯的主意,但我可以從同一個網站訪問框架,不是嗎?所以技術是可用的,但唯一的問題是SOP。你知道任何現代網絡布朗,允許關閉? Access-Control-Allow-Origin有什麼區別? – Tigran

+3

是的。是。不,不。 – Quentin