2011-09-18 12 views
1

我有,具有在頁面加載沒有來源的iframe一個頁面,只是使用硬編碼的HTML這樣的:正在改變一個iframe的src(與主機頁面不同的域名)與JavaScript認爲跨站點腳本?

<iframe id="theframe" src=""> 
<html> 
    <body> 
     <form name="theform" action="http://domainB.com/new" method="POST"> 
     <input type="text" /> 
     </form> 
    </body> 
</html> 
</iframe> 

的形式在jQuery中使用遂以

$('#theform').submit(); 

這將導致源的iframe從無(相同的域)更改爲表單數據發送和存儲的domainB.com。

然後我耽誤1秒,以顯示成功味精,然後要設定的框架回到它通過更改源回到沒什麼(同一域),並追加了原來的形式,這樣的原始內容:

$('iframe').attr('src', ''); 
    $('iframe').contents().find('body').empty(); 
    $('iframe').contents().find('body').append('<form name="theform" action="http://domainB.com/new" method="POST"><input type="text" /></form>'); 

然而,它不工作......即使我不試圖訪問domainB的內部內容,這是跨網站腳本,我只是設置iframe的src回到domainA?

如果是這樣,那麼無論如何設置src一旦它被更改爲不同的域?

(正如我寫的最後一句話,我意識到我可以刪除iframe並將其替換爲新的,但我仍然想知道是否將源改爲跨站點,這就是爲什麼它不工作?)

+0

我可以問你爲什麼一半的方式,提交一個通過AJAX(你甚至可以使用該應支持一個js庫..是那個jQuery?),並且你正在使用那個可怕的iframe解決方案? [順便說一句,你不能將請求從js發送到外部域,所以你應該通過服務於第一頁的服務器上的頁面代理提交。] – redShadow

+0

我使用的是iframe,因爲我需要提交頁面而沒有重新加載主頁,我知道ajax這樣做,但我不能使用Ajax,因爲單獨的域。 (跨站點腳本)因此,我在iframe中提交表單,只刷新表單,而不是主頁面。 – tsdexter

回答

2

這只是返回truefalse

$('iframe').attr('src') == ''; 

也許您正在尋找這樣的:

$('iframe').attr('src', ''); 
+0

您不能設置函數的返回值。 – icktoofay

+0

對不起,大腦沒有運作。應該修復。 – Blender

+0

糟糕。愚蠢的錯誤。但是,當我設置attr時沒有錯誤,但只要它嘗試將內容設置回表單,它仍然會導致跨站點錯誤。 – tsdexter