2010-01-21 51 views
6

我們假設我有我的瀏覽器加載一個Iframe與<iframe src="test.html">將iframe中的html內容複製到div(ajax)中?

我可以,使用ajax,加載到主html頁面的div的內容test.html?

這個想法是我的解決方案,我實際上正在努力克服與使ajax提交給遠程主機的限制。該計劃是生成具有0大小的iframe的動態頁面,該頁面向遠程主機發送報告請求。然後,在頁面(& iframe內容)加載後,我會將iframe內容複製到使用JS的div中。

提示讚賞,

謝謝 馬克西姆。

回答

2

不,你不能。

當您從不同的域加載頁面到iframe時,它變得無法訪問。您不能再訪問iframe的內容,因爲它來自不同的域。

我知道的唯一可以可靠地從不同域加載的腳本是JSONP使用的腳本。

+0

無賴......我確定因爲我可以在功夫的iframe中解決所有我的ajax問題。 感謝您的解釋。 – 2010-01-21 22:41:39

+0

@Maxim:有趣的是,我實際上在今天早些時候認爲,在意識到我無法訪問我已經加載的數據之前幾秒鐘...:) – Guffa 2010-01-21 23:43:28

1

我可以使用ajax將test.html的內容加載到主html頁面的div中嗎?

是(因爲你的例子有一個相對的URI,並在同一臺主機上)...

這種想法是我的這一事實,我確實努力克服着侷限性使Ajax解決方案提交給遠程主機。

...並且沒有。您仍然無法從遠程主機讀取數據。

0

...但是,您可能會設計一個AJAX請求到本地主機並從遠程服務器檢索信息(如here所述)。

1

我確定有人會糾正我,如果我錯了,但我相信跨域邊界的腳本受到限制。你試過了嗎?這是一個可以幫助你的功能。

function insertDivFromFrame(divname, framename) { 
    var frame = document.getElementById(framename); 
    var d = frame.contentWindow || frame.contentDocument; 
    if (oDoc.document) {d = d.document;} 
    document.getElementById('yourdiv').innerHTML = d.body.innerHTML; 
} 

我不知道這個代碼的工作......看到http://xkr.us/articles/dom/iframe-document/更多這方面的幫助。

0

如果你寫一個php/perl/etc。腳本來輸出來自另一個域的文檔內容,它會給你訪問的內容,因爲結果頁將被javascript認爲屬於你的域。如果您不熟悉任何服務器端腳本語言,我相信您可以通過執行簡單的Google搜索來查找腳本,以便爲您執行此操作。

祝你好運。

+0

這就是我們最終可能使用Apache HttpClient作爲簡單的前向代理。 我仍然懷疑有關更好/最好的代理解決方案:webapp軟件代理與Servlet容器代理與mod_proxy? – 2010-01-26 11:29:57