2009-09-01 58 views
13

我正在嘗試訪問和編輯iframe的內容。 iframe指向我自己的域上的子域上的頁面。這是我使用的JavaScript代碼,但它並不重要。如果我使用www,我可以從子域訪問iframe的內容嗎?在主域名上?

$('iframe').load(function(){ 
    $('div.code textarea.html').val($(this).contents()[0].html()); 
}); 

當我運行它時,它說我沒有從www.domain.com訪問example.domain.com的權限。那麼,如果我嘗試訪問的域名擁有www,那麼這一點很重要嗎?因爲我的主機不允許我不使用www。

回答

21

默認情況下,同源策略需要完全相同的主機名。

要告訴它不要,設置:(WWW)

document.domain= 'domain.com'; 

從兩個父腳本文件和IFRAME(例如)文件。

請注意,從腳本設置靜態編寫的iframe(或圖像)的onload是不可靠的,因爲可以想象,iframe可能會在解析器讀取iframe標記和讀取設置onload的腳本標記。要避免這種情況,要麼將事件處理程序作爲內聯'< iframe onload =「doSomething()」'屬性(內聯事件處理有幾個目的的少數幾個位置之一),或者如果可接受的話,從腳本創建iframe元素本身,在寫入src並將其添加到頁面之前設置onload。

+0

這樣做是否可以讓子域訪問域的cookie? – fent 2009-09-01 22:26:35

+1

通過閱讀'window.parent.document.cookie',是的。然而,發送和接收cookie的'domain'cookie參數不受document.domain影響。 – bobince 2009-09-01 23:02:56

相關問題