2010-07-19 115 views
2

我有這顯示一個XML文檔,我的網頁上的iFrame。如何訪問iFrame中的XML文檔?

<iframe id="iFrame2" name="iFrame2" width="100%" height="100%"> 

我需要從父頁面訪問iFrame中的XML文檔。我該怎麼做呢?

當我嘗試:

console.log(iFrame2.document); 

我得到以下錯誤:

Permission denied for <http://localhost:3000> to get property Window.document from <http://www.imageshack.us>. 

回答

1

見comp.lang.javascript FAQ:

http://www.jibbering.com/faq/#frameRef

+0

謝謝您的回答。我不知道如果我讀正確,但爲了從iFrame中獲取信息,我必須從iFrame的父文檔做的postMessage?我無法控制XML文檔,所以如果可以的話,我不確定我是否可以做到這一點。 – ben 2010-07-19 06:20:27

+0

@ben:'postMessage'不會幫你處理XML;這是爲了處理HTML文檔。 – 2010-07-19 06:53:02

0

在javascript中?也許是這樣的document.getElementById('iFrame2').contentWindow.document

1

我不相信這是一個跨瀏覽器的方式在不同的域訪問XML文檔。最簡單的方法是在您的服務器上設置一個抓取數據的小代理,然後簡單地向服務器發出Ajax調用。

我從來沒有使用Rails的,所以我不知道到底該是什麼樣子的服務器端(你必須創建一個單獨的問題),但基本上你將有它成立這樣你的服務器可以根據請求下載該XML文件並將其作爲文本吐出。然後,客戶端將使用Ajax請求(Google如果您不知道這是什麼)請求並使用JavaScript進行操作,則會獲取此XML數據。

因此,假設你正在使用jQuery,您的域名是www.example.com,你有一個名爲getxml是獲取XML數據並返回其觀點,你必須在JavaScript是這樣的:

$.get('http://www.example.com/getxml', function(xml) { 
    // Manipulate the `xml` variable here 
}, 'xml'); 

(見jQuery.get()的文檔)。

+0

感謝您的回答。我對web開發人員來說很新,你能否指出我如何做到這一點? – ben 2010-07-19 06:14:18

+0

@ben:當然可以。你在做任何服務器端開發?或者你只是在開發JavaScript的一部分?如果你在做服務器端,你使用什麼語言? – 2010-07-19 06:55:49

+0

謝謝。我正在使用Ruby on Rails。 – ben 2010-07-19 07:01:40