2010-08-27 71 views
1

爲什麼不

$(window['iframeName'].document.body).html() 

...工作當我改變.attr('src')

當我iframe的src屬性設置爲任意網址,當我創建的頁面,這個代碼

$(window['iframeName'].document.body).html() 

...會工作。

但是,當我改變由.attr('src',"www.google.com.sa") src屬性,等待加載頁面,

$(window['iframeName'].document.body).html() 

... ...將無法正常工作。

問題在哪裏?

+2

你是否總是將網址更改爲不同域名上的網站? – 2010-08-27 17:39:56

+0

是的,當我這樣做$(window ['iframeName']。document.body).html()不起作用。 – faressoft 2010-08-27 17:49:24

回答

0

當加載頁面:

$("#frameID").contents().find("jquery selector"); 

您可以使用呼叫ILKE此得到充分的HTML從iframe中的其他域中,您無法訪問它。這是出於安全原因。

+0

我不認爲!當我從頁面的原始代碼設置src時,iframe將加載站點(src)。 – faressoft 2010-08-27 18:48:09

+0

@faressoft:我已經在Firefox 3.6.3和Internet Explorer 8中嘗試了這一點,當嘗試訪問來自不同域的頁面時,它們會給出錯誤「訪問被拒絕」,無論iframe源是否設置爲原始HTML代碼或使用Javascript。一些瀏覽器可能允許一些跨域訪問,但大多數瀏覽器不會。 – Guffa 2010-08-27 19:44:50

+0

:0 看一看 http://mkb.ma/as – faressoft 2010-08-27 19:49:24

1

嘗試:

.attr('src',"http://www.google.com.sa") 
+0

這不是我的問題。 url中沒有任何問題。 $(window ['iframeName']。document.body).html()does not work – faressoft 2010-08-27 17:48:42

0

幾件事情:

首先,設置ATTR( 'SRC')將創建一個新的歷史項。你應該考慮你是否真的想這樣做,例如如果有人可以點擊後退按鈕並獲得最後一頁。如果您不想在歷史中更改狀態(適用於使用iframe而不是直接顯示的廣告或應用程序),則您需要改變文檔的位置。

其次,我覺得它更容易使用的頁面類似這樣的互動:

$("#frameID").contents(document).children().html() 
+0

$(「#frameID」)。contents(document).children()。html()它就像我的代碼,它通過.attr('src',「www.google.com.sa」)更改src後不起作用。 – faressoft 2010-08-27 17:53:58

+0

聽起來這是因爲跨域規則。當您的文檔位於與iframe不同的域(或子域)上時,您的頁面無法訪問或與其他頁面交互。它是內置的瀏覽器安全性。 http://en.wikipedia.org/wiki/Same_origin_policy 您可以通過查看瀏覽器的錯誤日誌或嘗試從javascript控制檯執行jquery來驗證這種情況。如果應該告訴你權限被拒絕或一些這樣的錯誤。 – dmrnj 2010-08-27 17:59:51

相關問題