2016-05-30 92 views
1

我已經約2天試圖做一些我無法弄清楚的框架怎麼做。 問題是我正在自定義Pentaho用戶控制檯(這是一種部署在tomcat上的web應用程序,它內部有很多iframe)。阻止來源「http:// localhost:8080」來源訪問框架「http://pentaho5XXX.com」

我自定義的html是在一個帶有導航水平菜單的iframe中(讓我們調用iframe「A」),該菜單中有另一個iframe(讓我們稱之爲iframe「B」)。導航的每一個鏈接和一些iframe「B」都加載在iframe「B」上,並且所有url指向一個域名爲www.pentaho5XXX.com的託管服務器。

我正在做所有我在localhost:8080的測試。我的問題是,當我試圖訪問一個變量的Iframe「B」內(其中URL加載的iframe),控制檯給了我以下錯誤:

Uncaught SecurityError: Failed to execute 'alert' on 'Window': Blocked a frame with origin " http://localhost:8080 " from accessing a frame with origin " http://pentaho5XXX.com " Protocols, domains, and ports must match.

據我所知,這是因爲我我試圖訪問託管在不同域中的url的DOM。當我嘗試使用localhost:8080網頁並且iframe不加載頁面時(當我將我的ip:8080/mypage凍結並且不執行任何操作時,出現此問題時,本地主機:8080它加載我一個空白頁)和導航控制檯給我沒有錯誤。

我檢查了一個新選項卡上的相同的網址,它適用於兩個鏈接,所以我不知道爲什麼會發生這種情況。

,我可能是做錯了另一件事是,我試圖訪問DOM變量和更改的iframe「B」的src相同IFRAME(「B」)

我會很高興的內如果有人可以幫助我,但我會很感激你讀的時間,所以無論如何謝謝你。

回答

0

由於「相同的來源策略」,您嘗試執行的操作僅僅是不可能的,因此Web導航器不允許您訪問「外部iframe」的屬性,也不允許其內容。當服務器像本地服務器一樣時,瀏覽器的行爲可能會有所不同,但它不會讓您訪問iframe標記。

+0

你稱之爲「外部iframe」是HTML內的任何常規框架嗎? –

+1

這是一個帶有src屬性的框架,指的是與您的域名不同的域名。 – Meshredded

+0

小草圖使它有點更清晰: - Pentaho的HTML ---->我的框架 「A」(橫向導航鏈接等) ----------->我的框架「B」是在「A」(幾個鏈接) 我所做的是從「B」iframe更改「B」的src通過jquery訪問父母做這種'$(「#iframe」, parent.document).attr(「src」,mylink);'通常工作。 我想要做的是更改src後,更改「B」iframe中頁面的一些CSS屬性。這可能是不可能的:l –

相關問題